用多个string标准searchExcel

我想从预定义的列表中search描述单元格中的任何单词(标准),并从相邻单元格中提取相关项目的金额。

为了说明,这里是我的设置:

A | B | C | D | E | F | Date | Descr.| Amount| Cat1 | Cat2 | Cat3 | 

D,E,F:这些都是项目类别。 如果该行中的项目属于一个类别,我希望它的数量在同一行中填充该类别单元格。 每个类别单元都有一个公式来testing这个并执行操作。

我的第一个想法是使用VLookup,但我有一个查找值列表。 我一直无法成功地做到这一点。 每个类别单元格都有这样的公式 – >

=IF(SUM(COUNTIF($B10,{"*costco*","*saputo*","*t & t*"}))>0,$C10," ")

列B指的是描述,它被search的任何标准。 如果说明中包含任何单词,则单元格将填充C列中的数量,否则其左侧将填充一个空格。

这是完美的,但我需要的标准(costco,saputo,t&t在这种情况下)是灵活的(添加或删除string到列表),而不是硬编码的公式。 这是我的问题:公式停止工作,如果我用另一个单元格的引用replace标准。 我对excel相对比较陌生,不熟悉其function的限制/约束,我怀疑这是个问题。

任何帮助非常感谢,让我知道如果我需要提供更多的信息。

ANKIT

创build一个名称(像一个命名的范围,但是指的是一个值,而不是一个范围。)

对于Excel 2007和2010,在“公式”选项卡上的“定义名称”组名称pipe理器中
对于Excel 2003插入,名称,定义

创build一个新的名称(让我们使用名称“KeyWords”),将其设置为“引用”值

 ={"*costco*","*saputo*","*t & t*"} 

公式然后变成编辑input作为数组公式

 =IF(SUM(COUNTIF($B10,KeyWords))>0,$C10," ") 

编辑列表然后变成编辑KeyWords指向值的值。 这可以通过名称pipe理器完成,或者如果你愿意,可以通过VBA完成

编辑

示例VBA

 Sub SetKeyWords() Dim wb As Workbook Dim nm As Name Set wb = ActiveWorkbook Set nm = wb.Names("KeyWords") nm.RefersTo = "={""NewString""}" End Sub 

将您正在查找的string加载到数组中(通过将范围转换为数组,或让用户从您devise的小表单中selectstring)

  Sub MyLookup(arrCategories() As Variant) Dim searchrange As Range Dim xCell As Range Dim count As Integer 'set searchrange to the proper column For Each xCell In searchrange For Each catg In arrCategories If xCell = catg Then 'Do something here End If Next catg Next xCell End Sub 

您可能需要根据案件是否重要来调整您的string数组。 根据您的数据集的大小,将searchrange转换为数组可能会更好。

可能有一个更快的方法来查看是否在给定的范围内find某些string,但这是一般的想法。