Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel:在事务中查找关键字,并从映射列表中获取相应的性质_Excel_Excel Formula_Excel 2010_Excel 2007 - Fatal编程技术网

Excel:在事务中查找关键字,并从映射列表中获取相应的性质

Excel:在事务中查找关键字,并从映射列表中获取相应的性质,excel,excel-formula,excel-2010,excel-2007,Excel,Excel Formula,Excel 2010,Excel 2007,经过广泛的研究,我找不到任何问题的答案。给你。每个月,我都会根据交易的性质(如食物、购物和娱乐)对交易进行分类(来自银行对账单)。因此,我准备了一个具有以下性质的关键词映射: A列-B列 沃尔玛-购物 Netlix-娱乐 麦当劳-食品 在excel的两列中(列表很长,示例已简化)。每个交易记录都包含许多交易的文字和细节。我想要的是,如果一笔交易包含了NETFLIX的关键字,我需要将wordENTERTAINMENT作为nature放在excel中交易栏的旁边。示例:如果交易为“…从信用卡12

经过广泛的研究,我找不到任何问题的答案。给你。每个月,我都会根据交易的性质(如食物、购物和娱乐)对交易进行分类(来自银行对账单)。因此,我准备了一个具有以下性质的关键词映射:

A列-B列

  • 沃尔玛-购物
  • Netlix-娱乐
  • 麦当劳-食品
在excel的两列中(列表很长,示例已简化)。每个交易记录都包含许多交易的文字和细节。我想要的是,如果一笔交易包含了NETFLIX的关键字,我需要将wordENTERTAINMENT作为nature放在excel中交易栏的旁边。示例:如果交易为“…从信用卡12345获得的Netflix的6月费用…”,则交易详情中包含关键字Netflix,然后带来娱乐。如果我的列表很短,我会用=if(isnumber)(search(…公式)来完成,但我的列表很长

顺便说一句,只需提取事务列n旁边的关键字也可以,因为剩下的可以由Vlookup完成

我需要你的帮助,朋友们

以下公式并非适用于所有交易:


您可以使用如下公式:

=INDEX(E:E,AGGREGATE(15,7,ROW($D$2:$D$4)/(ISNUMBER(SEARCH($D$2:$D$4,A2))),1))
请注意,这是一个数组类型的公式,每次计算时都会对整个关键字列表进行两次迭代。这些公式太多,计算速度会很慢

要确保找到完整的单词,请执行以下操作:

=INDEX(E:E,AGGREGATE(15,7,ROW($D$2:$D$4)/(ISNUMBER(SEARCH(" "&$D$2:$D$4&" "," "&A2&" "))),1))

尝试以下设置:

D1
中使用以下公式:

=INDEX(B:B,MIN(IF(ISNUMBER(FIND(" "&A1:A3&" "," "&C1&" ")),ROW(A1:A3),"")))

注意:这是数组输入的

任何公式都将使用数组版本,因为它需要迭代关键字,如果列表很长并且有很多事务,缩短列表的唯一方法是使用vba批量处理整个列表。我感谢在这方面的任何帮助。我对vba没有任何实际操作经验,但我至少可以遵循instr如果有任何资源,请告诉我。谢谢。虽然我不确定这是否是你想要的,因为你说:“如果我保持我的列表简短,我会用=if(isnumber)(search(…formula,但我的列表是looong)来做。嗨,谢谢你的建议。但是,这似乎不适合我的情况。请检查这里的捕获(我无法在此发布):你能告诉我哪里错了吗?看起来你不是在使用关键字而是在使用KeyEntences…@ibrahimtorYes,因为如果关键字很短,它可能包含在许多事务中,从而导致错误的映射。如果关键字足够长,则关键字在许多事务中出现的几率很低,从而导致更好的映射这里正在进行测试。我的列表很长。我意识到:当相关关键字相对位于列表的开头时,公式工作正常,并具有正确的性质。但是,当相关关键字位于列表的最下方时,公式具有错误的性质。我检查了我的事务中是否有关键字尾巴,这带来了错误的性质。我如何解决这个问题?或者一个更简单的问题,我可以在交易中带上关键词。回到我的例子,带上netflix,而不是娱乐。谢谢你的帮助。请发布你正在使用的实际公式。还请记住,这将找到与sub strin的第一个匹配项g、 因此,如果您在
Netflix
之前有
Net
,它将在
Net
返回匹配项。请参阅上面有问题的编辑文章。我在问题下方添加了屏幕截图。我反复检查了它是否正常工作。公式对某些事务不起作用。我不明白为什么。您可能想了解原因<代码>模糊查找< /代码>它是一个插件。你的单词必须是完整的单词。你在B栏中的单词中间停下来,也不要在集合内使用完整的列,这只会加重迭代次数。