基于列表和单元格值的自动填充

Autofill based on list and value of a cell

我正在制作一个电子表格来帮助我进行个人会计。我正在尝试在 LibreOffice Calc 中创建一个公式,它将在给定的单元格中搜索许多不同的文本字符串,如果找到 return 一个文本字符串。

例如,公式应在 $C6 中搜索 "burger" 或 "McDonalds",然后同样地搜索 return "Food" 至 $E6。它不应该区分大小写。并且需要部分匹配字符串以及汉堡王的情况。我需要它能够搜索其他关键字和 return 这些值,例如 "AutoZone" 和 return "Auto" 以及 NewEgg 和 return "Electronics".

我很难找到任何类型的解决方案,我能得到的壁橱是 MATCH 公式,但是一旦我将它嵌套在 IF 中,它就无法工作.我也试过嵌套 IFOR;两者都不快乐。

示例:

=IF(OR(D10="*hulu*",D10="*netflix*",D10="*movie*",D10="*theature*",D10="*stadium*",D10="*google*music*")=1,"Entertainment",IF(OR(D10="*taco*",D10="*burger*",D10="*mcdonald*",D10="*dq*",D10="*tokyo*",D10="*wendy*",D10="*cafe*",D10="*wing*",D10="*tropical*",D10="*kfc*",D10="*olive*",D10="*caesar*",D10="*costa*vida*",D10="*Carl*",D10="*in*n*out*",D10="*golden*corral*",D10="*nija*",D10="*arby*",D10="*Domino*",D10="*Subway*",D10="*Iggy*",D10="*Pizza*Hut*",D10="*Rumbi*",D10="*Custard*",D10="*Jimmy*")=1,"Food",IF(OR(D10="*autozone*",D10="*Napa*",D10="*OREILLY*")=1,"AUTO","-")))

我可以创建一个不同的 table 并创建一个查找参考,所以另一种表达方式是我需要一些与 VLOOKUPHLOOKUP 做相反的事情并且 return 给定列中匹配的任何数据的 header 值。

类似于:

=IF(NOT(ISNA(MATCH(A1,B3:B99))),B2,IF(NOT(ISNA(MATCH(A1,C3:C99))),c2,0))

如果 A1 是测试,B2C2 是 header 并且它在那些下方搜索。

您可以使用 INDEX/MATCH/VLOOKUP 公式以多种方式执行此操作。只是一些注意事项:我正在使用 Excel,但从未使用过 Libre,所以希望它能起作用;并且,您将需要一个映射 table,将麦当劳映射到食物,将 Google 音乐映射到娱乐等等(对于所有可能的情况)。

假设您的屏幕截图中的映射 table 是 A6 到 E9。

E10中的公式=vlookup(C10,$C:$E,3,0)

解释:它在 table $C$6:$E$9 中查找 C10(汉堡王),结果是第 3 列(E 是从 C 开始的第 3 列,其中查找了 C10) table。 0 将为您提供完全匹配,如果您想要部分匹配,请在此处输入 1。

注意:如果您的映射 table 位于 G 和 H 列(G 中的服务名称和 H 中的服务类型),并且您不确定它会有多少条目,mod 到公式是 =vlookup(C10,$G:$H,2,0) OR =vlookup(C10,$G:$H,2,1) 对于部分匹配。此处,3 被 2 替换,因为 H 是 G 的第 2 列,其中将查找 C10。

编辑:使用 INDEXMATCH 函数执行 VLOOKUP 以获得文本的近似匹配 - 这可能是您在上一条评论中看到的解决方案(?)

有两件事需要完成。 a.Reference table 个条目,b.applying INDEX/MATCH 函数。

a 部分 - 在您的参考 table 中,您必须在 2*s 之间输入条目才能查找值。您在 Qn *movie**wendy* 等示例中提到的方式。 这就是我们通过单元格引用查找的真正诀窍。 对应的 return 值,如 Entertainment/Food/etc 需要是它们自己的完整单词。假设您在 G6:H26 列中准备了此 table(G 查找值,H-return 值)

b 部分 - 在您的单元格 F6 中(根据您的屏幕截图),您可以尝试这个公式 =INDEX($H:$H,MATCH(C6,$G:$G,0)) 这真的只是使用 INDEX/MATCH.

的 VLOOKUP 的替换公式

由于您存储在 G 列中的值位于 *s 中,因此 MATCH 公式中的单元格 C6 将进行部分读取。

根据我的评论,试试这个:

=IF(SUM(LEN(G150)-LEN(SUBSTITUTE(LOWER(G150),{"hulu","netflix","movie","theater"," stadium"},"")))>0,"Entertainment",IF(SUM(LEN(G150)-LEN(SUBSTITUTE(LOWER(G150),{"burger","taco","vida","caf‌​e","wing","dairy","mcdonald","wendy","kfc","pizza","carl","domino","ceaser","oliv‌​e","jimmy","custard","subway","arby"},"")))>0,"Food",IF(SUM(LEN(G150)-LEN(SUBSTITUTE(LOWER(G150),{"autozone","Napa","oreilly"},"")))>0,"AUTO","-")))

这是一个数组公式,必须用Ctrl-Shift-Enter确认。