2016-03-06 72 views
2

我有一個Excel工作表主表:在另一個工作表Excel中 - 下拉基於值列表值行匹配某些文本

Main table

和產品表(在名稱管理器命名爲Products) :

Products table

我想是在主表的下拉框中可用的值從產品表中查找。例如,在第一個屏幕截圖中選擇的單元格旁邊有單詞「model」。因此,我想瀏覽產品表,查找在「類型」列中包含「模型」一詞的任何行。當我們找到它時,我希望「名稱」列中的值在下拉列表中可用。我需要在'產品'表中的每一行'類型'列中的'模型'。

畢竟,我們移動到第一個範圍內的下一個單元格,它旁邊有'圖形'。這一次,我想通過查看產品表中的「圖形」。等等,等等

在試圖做到這一點,我用這個公式中的名經理,並用它在細胞下拉列表來源:

= INDEX(產品[[#數據],[名稱],MATCH(「型號」,產品[[#數據],[類型]],0))

然而,問題是隻有第一個匹配出現名單。換句話說,它可以工作,但列表只有一個項目。我發現this後,這是非常類似於我想要做的。

回答

0

我會這樣做的方式將涉及幫助列和一個簡單的宏,並會做你想做的。

1部分:VBA宏

這個宏將在價格列表中的項目進行排序。

Sub Sorter() 

    Sheets("Products").select 
    Range("A:D").Select 
    ActiveWorkbook.Worksheets("Products").Sort.SortFields.Clear 
    ActiveWorkbook.Worksheets("Products").Sort.SortFields.Add Key:=Range("B:B") _ 
     , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    ActiveWorkbook.Worksheets("Products").Sort.SortFields.Add Key:=Range("C:C") _ 
     , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 
    With ActiveWorkbook.Worksheets("Products").Sort 
     .SetRange Range("A:D") 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
End Sub 

第2部分:產品助手欄:您應該每次添加一個新的項目時運行

在產品表,F列中插入以下公式:

列F(單元格F2):=B2&"-"&C2

該公式將用於獲取該項目的價格,以防在不同類別下有多個具有相似名稱的項目。

products sheet

3部分:下拉列表助手柱

在下拉列表片,在G列增加一個新的輔助柱,用下列公式計算:

="Products!$C"&MATCH($A2,Products!$B:$B,0)&":$C"&SUM(COUNTIF(Products!$B:$B,$A2),MATCH($A2,Products!$B:$B,0)-1) 

Dropdown Sheet

數據驗證公式應該看第e範圍顯示在單元格G中使用間接(例如:=INDIRECT($G2)

指向該文件的鏈接附於here

您可以隱藏幫助列,但確保在添加新項目時拖動公式。

要獲得該項目的價格,使用這個公式:

=SUMIF(Products!$F:$F,'Drop Down'!$A2&"-"&'Drop Down'!$B2,Products!$D:$D) 

這將確保,如果2個類別也有類似的項目名稱,價格將是預期的項目。

我希望這會有所幫助。

相關問題