我正在处理多个产品系列,每个系列都有多个产品。有些系列的产品比其他系列多,所有产品名称都是唯一的。在一个名为“prod fams”的工作表上,我有一个查找表,如下所示:
| Product names | Product family |
|:---- |:------: |
| Prod1, Prod2 | Gizmos |
| Thing1, Thing2, Thing3, Thing4 | Widgets |
在另一张表中,我有一个现场故障数据库。每一行都是一个故障实例,并有一个与之关联的产品,如下所示:
| Case number | Date | Product Name |
|:---- |:------:|:------: |
| 1 | 2/21/22| Prod2 |
| 2 | 2/22/22| Thing3 |
我想在这个数据库中为产品系列添加第四列。我的公式是 Vlookup,如下所示:
=VLOOKUP("*"& C2 &"*",'prod fams'!A$1:B$12,2,FALSE)
所以我发现产品2(在本例中)在查找表的产品名称列中 - 注意星号通配符 - 并返回产品系列。这适用于“Gizmos”,但不适用于“Widgets”。对于 Widgets,我得到 #N/A。这是怎么回事?
答案1
不是这个wildcard
方面。VLOOKUP()
本身只能使用前255个字符。
(有很多方法可以解决这个问题,但这不是这里的重点。)
INDEX/MATCH
有同样的问题。
但是,最简单的解决方案是使用XMATCH()
(作为一个更新的函数,它能够处理更长的字符串)。
如果这对您很重要的话,这将允许您保留原始结构。
答案2
我找到了答案。显然,Excel 通配符只能搜索一定数量的字符。我的解决方法是在查找表中为“Widgets”创建另一行,并将一半产品放在第一行,其余放在第二行。
我不确定字符限制是多少,但我怀疑是 255。原因是我必须拆分的行大约有 280 个字符(并且 255 是十进制中的最大值字节)。