Excel 检查VLOOKUP中的一位、两位或三位数字
我有大约30个数字,分别是1、2或3位数字,它们是代码。这些代码附在其他数字的前面。我想知道数字前面是什么代码,例如,对于数字Excel 检查VLOOKUP中的一位、两位或三位数字,excel,excel-formula,Excel,Excel Formula,我有大约30个数字,分别是1、2或3位数字,它们是代码。这些代码附在其他数字的前面。我想知道数字前面是什么代码,例如,对于数字35467036,前两位数字与代码35匹配。所以我希望它的输出是1.5 这是我当前的设置,我有一个表,表中有所有代码,后面是下一列中的输出。如果所有的代码都是三位数的话,我可以这样做=VLOOKUP((左(E6,3)和“*”),D1:E3,2,FALSE),但不幸的是它们不是 我也尝试过使用嵌套的IF语句,但我只能达到7个级别 这只能在VBS中实现,还是有其他方法 编辑:
35467036
,前两位数字与代码35
匹配。所以我希望它的输出是1.5
这是我当前的设置,我有一个表,表中有所有代码,后面是下一列中的输出。如果所有的代码都是三位数的话,我可以这样做=VLOOKUP((左(E6,3)和“*”),D1:E3,2,FALSE)
,但不幸的是它们不是
我也尝试过使用嵌套的IF语句,但我只能达到7个级别
这只能在VBS中实现,还是有其他方法
编辑:
代码列的格式为文本。如果我在左侧输入值3,则两位数字无效。是否有任何我可以让它工作的1,2和3位代码?此外,代码不会重叠,例如,代码表中不会有96和965。作为限制,七个嵌套的IF指向非常旧版本的Excel。您可能想考虑升级到本世纪仍然支持的版本。 但您的主要问题是查找值的数据类型是文本,因为您使用通配符连接字符串。而查找表的第一列可能由数字组成 为了解决这个问题,您需要在查找表中添加一个文本列,将数值表示为文本值 如果要使用Vlookup,则该helper列必须是查找范围的第一列 您可以使用索引/匹配而不是Vlookup来独立于列顺序,如此屏幕截图所示: H列显示了G列中应用的公式 编辑: 根据您发布的屏幕截图,您希望从E列到F列中的表中查找,该表中只有短代码。因此,在查找值中添加通配符是没有意义的。您只需要提取要用于查找的值 如果只想查找两位数字,则只需提取两位数字。添加通配符不会删除第三个数字 在下面的屏幕截图中,一个helper列向LEFT()函数提供要提取的字符数,然后在VLookup中使用该值
=VLOOKUP(LEFT(A1,B1),$E$1:$F$5,2,FALSE)
=索引(LookupValues,Small(arrayofrowsfromfromifstatements,FirstRow))
这是一个数组公式,因此您需要在公式栏中使用Ctrl+Shift+Enter
我们使用If构建条件匹配的行号数组,如果条件不匹配,则返回FALSE。然后,小函数返回数组中最小的结果,这将是条件匹配的第一行
然后,我们对返回该行号的结果进行索引(从行中减去-1以抵消标题)
如果A列中的数字始终为6位数+代码长度,则可以使用此选项:
=VLOOKUP(--LEFT(A1,LEN(A1)-6),E2:F5,2,FALSE)
谢谢您的回复,我尝试过使用索引,但它只能使用3位代码。我是否也可以将其调整为1和2?我在问题中添加了一个包含更多信息的屏幕截图。在查看了您的屏幕截图后,我用另一个建议编辑了我的答案。我假设情况会是这样,我必须稍微更改我的工作流程才能完成“帮助者”列,但必须这样做。谢谢你的帮助,我真的很感激!其他数字是否保留了固定长度或可变长度的代码部分(即数字的数量)。@skkakkar没有代码的数字长度不同。
=VLOOKUP(--LEFT(A1,LEN(A1)-6),E2:F5,2,FALSE)