我有2个数据集,我想根据包含数字字符串的公共字段进行匹配。由于一个数据集的字符串包含在另一个数据集的字符串中(例如, 9876 与12 9876 0匹配),我使用的是{的组合{1}}(或LEFT()
)和RIGHT()
。这种方法的问题是,当数字字符串改变数字位数和子串的位置时,我必须手动重写公式(例如, 987654 与12 987654 <匹配/强>)。有关如何更有效地进行比赛的任何见解?
答案 0 :(得分:1)
以下数组公式¹将从真实数字的查阅列生成正确的通配符结果。
=VLOOKUP("*"&H5&"*", TEXT(H$8:I$10, "0"), 2, FALSE)
在下图中,请注意,这会产生将返回值从真实数字转换为文本的副作用。 double-unary可以照顾到这一点。
¹数组公式需要用 Ctrl + Shift + Enter↵完成。一旦正确进入第一个单元格,就可以像任何其他公式一样向下或向右填充或复制它们。尝试并减少对更接近表示实际数据范围的范围的全列引用。数组公式以对数方式计算计算周期,因此将参考范围缩小到最小值是一种好习惯。有关详细信息,请参阅Guidelines and examples of array formulas。
答案 1 :(得分:0)
您可以在VLOOKUP
。
=VLOOKUP("*9876*", H8:I10, 2, FALSE)
OR
=VLOOKUP("*"& B4 &"*", H8:I10, 2, FALSE)
不是寻找等于9876的单元格,而是查找包含9876的单元格,而不需要LEFT
,RIGHT
等。