我在一个Excel电子表格中有两个列表。
第一个列表包含诸如以下的字符串
1234 blue 6 abc
xyz blue/white 1234
abc yellow 123
另一个列表包含第一个列表的子字符串
yellow
blue/white
blue
结果
1234 blue 6 abc blue
xyz blue/white 1234 blue/white
abc yellow 123 yellow
现在,我需要某种匹配公式,将第二个列表中的正确值分配给第一个列表。问题是,没有确定颜色子字符串放置位置的特定模式。另一个问题是,值不是完全唯一的。如我上面的示例所示,查找需要按顺序进行(在检查“蓝色”之前先检查“蓝色/白色”)。
我也使用match
处理find
,wildcards *
之类的公式,但没有得到任何结果。
关于SO的一个类似问题涵盖了相反的情况How to find if substring exists in a list of strings (and return full value in list if so)
将寻求任何帮助。公式很酷,但是使用vba也可以。
答案 0 :(得分:2)
答案 1 :(得分:0)
这是VBA的解决方案
代码基本上包含嵌套的while循环,用于检查子字符串是否在字符串内部。
row_1 = 1
While .Cells(row_1, "A") <> ""
row_2 = 1
While .Cells(row_2, "C") <> ""
color = .Cells(row_2, "C").Value
If InStr(1, .Cells(row_1, "A"), color, vbBinaryCompare) > 0 Then
.Cells(row_1, "B") = color
End If
row_2 = row_2 + 1
Wend
row_1 = row_1 + 1
Wend