2015-09-26 126 views
0

我在Excel 2013中有一张表,其中有数千个食品记录(牛肉冷冻,牛肉冷藏,牛腩,牛肋骨,鸡肉圆角,整个鸡肉,鱼皮,整鱼,酸奶,生菜进口,生菜冷冻,番茄新鲜,番茄,水,牛奶,等等),注意该值可能包含其他内容比食物项目名称。检查列中是否存在多个值中的一个

我在列A旁边创建了列B.我希望列B在列A中包含食物项目的类别。例如,如果A1在其中包含“牛肉”或“鸡肉”或“鱼”,则B1应该等于“肉”。如果A1有“番茄”或“生菜”或“洋葱”,那么B1应该等于“蔬菜”。

实现它的最好方法是什么?

+0

你可以创建一个包含牛肉,鸡肉或鱼等数值的数组,然后使用InStr函数比较每个单元格(查找文档ntation),同时在数组中循环。然后有一个if语句将肉或蔬菜放入相应的单元格中。 –

+0

@ExcelHero键入前思考。将删除 –

回答

1

假设你有列标题,在单元格B2输入公式:

=REPT("Meat",MAX(IFERROR(MATCH({"*beef*","*chicken*","*fish*"},A2,),))) & REPT("Vegetable",MAX(IFERROR(MATCH({"*tomato*","*lettuce*","*onion*"},A2,),))) 

这是一个阵列式,并且必须以Ctrl键 + + 输入来确认。

现在复制B2并选择B3,只要你需要和粘贴。

注意:请仔细看看公式中间的大差距。你会发现这实际上是两个单独的公式连接在一起,并符号。您可以通过为新类别添加与前两个类似的其他短语来轻松扩展此公式。事实上,你可以用这种方式添加更多类别。

+0

非常聪明的丹尼尔!我从来没有想过以这种方式使用REPT功能。 – rwilson

+0

谢谢你。这是非常有用和易于使用的。需要获得Excel的诺贝尔奖! – surfrider

0

设置一个双列表。命名它,例如FoodTable。对于产品的类型,第一列命名为Word(关键字),第二列命名为Type。事情是这样的:

enter image description here

然后,用你的数据在A列,在B1输入以下公式和向下填充:

=LOOKUP(2,1/ISNUMBER(FIND(FoodTable[Word],A1)),FoodTable[Type]) 

结果:

enter image description here

相关问题