2016-03-06 118 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个类别也有类似的项目名称,价格将是预期的项目。

我希望这会有所帮助。

相关问题