在工作中,经常会遇到这样的问题,就是,看到一个数值,就需要输出一个答案,例如下图这样:
看到“商品明细”里的玉米,就需要输出地址,例如它的正确答案,地址是“仓库甲”,看到“钢笔”,就需要输出“西南仓库”这个答案,假如有海量的数据,例如商品明细里有500个,做起来太辛苦了。
我想寻求一个方法,例如我先把500个正确答案,写好弄进一个编程或者公式,例如玉米对应仓库甲,例如毛巾对应广东仓库,等等
最后让这个公式或者编程自动运行,像一个机器人一样,自动识别“商品明细”里的商品,然后它能自动把正确答案填写在“地址”那一栏那里,这样一来我就省事多了,要不然,自己手动打字。一来太辛苦了,二来容易出错
有大神懂吗,ECXEL或者WPS或者其他软件,尽量简单的公式(太复杂,我真心不会),5金币答谢,最好是免费的方法哈(如果是收费的软件例如WPS,也希望尽量便宜点哈),3个名额,先到先得,后续,答得好的,可以重复感谢。
看到“商品明细”里的玉米,就需要输出地址,例如它的正确答案,地址是“仓库甲”,看到“钢笔”,就需要输出“西南仓库”这个答案,假如有海量的数据,例如商品明细里有500个,做起来太辛苦了。
我想寻求一个方法,例如我先把500个正确答案,写好弄进一个编程或者公式,例如玉米对应仓库甲,例如毛巾对应广东仓库,等等
最后让这个公式或者编程自动运行,像一个机器人一样,自动识别“商品明细”里的商品,然后它能自动把正确答案填写在“地址”那一栏那里,这样一来我就省事多了,要不然,自己手动打字。一来太辛苦了,二来容易出错
有大神懂吗,ECXEL或者WPS或者其他软件,尽量简单的公式(太复杂,我真心不会),5金币答谢,最好是免费的方法哈(如果是收费的软件例如WPS,也希望尽量便宜点哈),3个名额,先到先得,后续,答得好的,可以重复感谢。
0
VLOOKUP只能匹配得到一个结果,如果模糊查询、结果一对多怎么办?
如果巨量数据,比如上百万条,VLOOKUP估计要卡死卡崩溃。
其实用Excel自带的筛选就可以实现(一对多),巨量数据虽然也可能会崩溃,但肯定不会比VLOOKUP先崩溃。
筛选还有个好处,就是不用维护。
如果巨量数据,Excel难堪重任,得用数据库或者算法。
如果巨量数据,比如上百万条,VLOOKUP估计要卡死卡崩溃。
其实用Excel自带的筛选就可以实现(一对多),巨量数据虽然也可能会崩溃,但肯定不会比VLOOKUP先崩溃。
筛选还有个好处,就是不用维护。
如果巨量数据,Excel难堪重任,得用数据库或者算法。
1
赞同来自: 虎符
第一步,你在execl里建立两张表
一张叫品种表并且按我这样把数据录全。这里面有一个问题要注意,第一列必须是你那些商品的名字,并且同一格里不能写两个商品,也就是说这第一列是你所有商品的一个列表。第二列是地址可以同一格里写两个以上的地址。因为我看你好象是药品在不同的仓库里都有。
另一张叫结果表,第一行是表头,第二行是第一个格里写商品的名字,第二行第二个格里写这样一个函数:=VLOOKUP(A2,品种表!A1:B7,2,)。要注意的是这个函数里:品种表!A1:B7这句是因为你给的例子只有七件商品因此我做的品种表也只有七行,如果你将来自己做出来的表有500行,那这句话就应该改成=VLOOKUP(A2,品种表!A1:B500,2,)如果你将来做出来的表有357行那这句话就应该是=VLOOKUP(A2,品种表!A1:B357,2,)
第二步,当你使用这个表的时候,你只要在结果表的第二行第一列那个格里写上商品的名字:比如食品,你一按回车这个表的第二行第二列自动就会出现它的地址了。
一张叫品种表并且按我这样把数据录全。这里面有一个问题要注意,第一列必须是你那些商品的名字,并且同一格里不能写两个商品,也就是说这第一列是你所有商品的一个列表。第二列是地址可以同一格里写两个以上的地址。因为我看你好象是药品在不同的仓库里都有。
另一张叫结果表,第一行是表头,第二行是第一个格里写商品的名字,第二行第二个格里写这样一个函数:=VLOOKUP(A2,品种表!A1:B7,2,)。要注意的是这个函数里:品种表!A1:B7这句是因为你给的例子只有七件商品因此我做的品种表也只有七行,如果你将来自己做出来的表有500行,那这句话就应该改成=VLOOKUP(A2,品种表!A1:B500,2,)如果你将来做出来的表有357行那这句话就应该是=VLOOKUP(A2,品种表!A1:B357,2,)
第二步,当你使用这个表的时候,你只要在结果表的第二行第一列那个格里写上商品的名字:比如食品,你一按回车这个表的第二行第二列自动就会出现它的地址了。
0
=VLOOKUP("*"&TRIM(RIGHT(SUBSTITUTE(E2,"*",REPT("",99)),99))&"*",A2:B4,2,FALSE)
试了一下,这种方式可以,不过是按最后一个单词去找的,本例中TRIM(RIGHT(SUBSTITUTE(E2,"*",REPT("",99)),99))就是指“玉米”
试了一下,这种方式可以,不过是按最后一个单词去找的,本例中TRIM(RIGHT(SUBSTITUTE(E2,"*",REPT("",99)),99))就是指“玉米”
0
在 Excel 中可以通过 VLOOKUP 函数来实现类似的功能。
假设您在 Sheet1 中有两列数据,A 列是商品名称,B 列是对应的地址。
在另一个 Sheet 或者当前 Sheet 的其他位置,您有商品明细的列表。
在需要显示地址的单元格中输入以下公式:
=VLOOKUP(商品单元格, Sheet1!A:B, 2, FALSE)
例如,如果您的商品明细在 C 列,从 C2 开始,那么在 D2 单元格输入上述公式,并向下填充,就可以根据商品名称自动获取对应的地址。
请注意,"商品单元格" 要替换为实际的商品所在的单元格引用,例如 C2 。"Sheet1" 要替换为您存储商品名称和地址数据的工作表名称。
假设您在 Sheet1 中有两列数据,A 列是商品名称,B 列是对应的地址。
在另一个 Sheet 或者当前 Sheet 的其他位置,您有商品明细的列表。
在需要显示地址的单元格中输入以下公式:
=VLOOKUP(商品单元格, Sheet1!A:B, 2, FALSE)
例如,如果您的商品明细在 C 列,从 C2 开始,那么在 D2 单元格输入上述公式,并向下填充,就可以根据商品名称自动获取对应的地址。
请注意,"商品单元格" 要替换为实际的商品所在的单元格引用,例如 C2 。"Sheet1" 要替换为您存储商品名称和地址数据的工作表名称。