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

我正在制作一个电子表格来帮助我进行个人会计。 我试图在LibreOffice Calc中创build一个公式,它将在给定的单元格中search大量不同的文本string,如果find,则返回一个文本string。

屏幕截图

例如,公式应该在$C6search“汉堡”或“麦当劳”,然后返回“食品”到$E6 。 它不应该区分大小写。 和汉堡王的情况一样,需要对string进行部分匹配。 我需要它能够search其他关键字,并返回这些值,如“AutoZone”,并返回“自动”和NewEgg并返回“电子”。

我有一个艰难的时间find任何解决scheme,而我可以得到的壁橱是一个MATCH公式,但一旦我嵌套在一个IF它不会工作。 我也试着用OR嵌套IF ; 也不喜欢。

例子:

 =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","-"))) 

我可以创build一个不同的表,并创build一个查找引用,所以另一种方法来放置这个是我需要的东西,做什么和hlookuphlookup相反,并返回给定列中匹配的任何数据的标题值。

就像是:

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

如果A1是testing, B2C2是标题,那么在下面search。

任何帮助将非常感激。 提前致谢!

根据我的意见,试试这个:

 =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确认。

在这里输入图像说明

你可以使用INDEX / MATCH / VLOOKUP公式来做到这一点。 只是一些注意事项:我使用Excel,并且从来没有使用自由,所以希望这个工程; 并且,您需要一个映射表,将MacDonalds映射到食品,Google音乐到娱乐等(尽可能使用所有情况)。

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

E10 =vlookup(C10,$C$6:$E$9,3,0)

说明:它在表格$ C $ 6:$ E $ 9中查找C10(汉堡王),结果是该表格中的第三列(E是C的第三列,其中C10被查找)。 0会给你一个精确的匹配,如果你想要部分匹配,那么在那里input1。

注意:如果你的映射表在G列和H列中(G中的服务名称和H中的服务types),并且你不确定它将有多less个入口,则公式的mod是=vlookup(C10,$G:$H,2,0) =vlookup(C10,$G:$H,2,1)对于部分匹配=vlookup(C10,$G:$H,2,1) OR =vlookup(C10,$G:$H,2,1) 。 在这里,3被replace为2,因为H是G的第二列,其中C10将被查找。

编辑:使用INDEXMATCHfunction的VLOOKUP近似匹配的文本 – 这可能是您在上次评论(?)中看到的解决scheme

有两件事情需要完成。 a。参考表项,b。应用INDEX / MATCHfunction。

第一部分 – 在您的参考表格中,您必须在2 * s之间input要查找的值。 你在你的例子中提到的Qn *movie**wendy*等等。 这真是使我们能够通过单元格引用来查找的技巧。 相应的回报值,如娱乐/食品等等,都必须是他们自己的完整单词。 假设您已经在G6:H26列(G-lookup值,H-return值)

B部分 – 在你的单元格F6(按照你的截图),你可以试试这个公式=INDEX($H$6:$H$26,MATCH(C6,$G$6:$G$26,0))真的只是使用INDEX / MATCH的VLOOKUPreplace公式。

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