我有一张包含以下列的工作表: 第 1 列:包含“TS001”、“TS002”、“DR001”、“MS002”等形式的文本。 开头的 2 个字母是制造商名称的代码,例如“MS=Microsoft”。 对于第二列,我想要一个公式,通过第一列并搜索这些字母,然后返回制造商的完整名称。
例如,它应该是这样的:
第 1 列 | 第 2 列 |
---|---|
MS001 | 微软 |
TS002 | 乐购 |
DR001 | 博士。胡椒 |
TS003 | 乐购 |
这样的事情有可能吗?
非常感谢!
答案 0 :(得分:0)
当您说“MS=Microsoft”时,它意味着您在某处有一张带有该引用的表。出于以下示例的目的,我创建了一个名为 ReferenceTable
的工作表,其中 A 列包含两个字母代码,B 列包含公司名称。所以它看起来像这样:
A | B |
---|---|
MS | 微软 |
TS | 乐购 |
现在在 B 列的主表中,您将编写以下公式:
<块引用>=ARRAYFORMULA(VLOOKUP(MID(A1:A,1,2),ReferenceTable!A1:B,2,FALSE))
这将为您提供从参考表中查找的公司名称。 数组公式就在那里,因此您只需将此公式放在单元格 B1 中,并假设您将使用 ReferenceTable 表作为列表;这样,当您向 A 列添加记录时,B 列中的数组公式会填充 B 列。
答案 1 :(得分:-1)
我只是使用参考表和 VLOOKUP 公式
如果单元格 B7
包含“MS0001”
以下公式将再次尝试仅匹配位于单元格 O7:P9
中的引用表的前两个字母
=VLOOKUP(MID(B7,1,2),O7:P9,2,FALSE)
并在找到“MS”时返回“Microsoft”
答案 2 :(得分:-2)
为了实现你想要的,在某处你需要有一个包含两个字母代码和相应公司名称的列表。
与所有 vba 一样,有多种方法可以做到这一点,但我可能会将两个字母的代码和公司数据放入一个数组中,然后遍历 col1 为 col2 创建所需的输出。
例如,假设两个字母代码和公司名称分别位于 col3 和 col4,但您可以将其更改为它们所在的任何位置。
Sub CompName()
Dim Cmpname () as string
Dim col1 as range, rng as range
Cmpname = range(range(“C1”), range(“D1048576”).end(xlup))
Set col1 = range(range(“A1”), range(“A1048576”).end(xlup))
For each rng in col1
For i = lbound(Cmpname, 1) to ubound(Cmpname, 1)
If left(rng, 2) = Cmpname(i, lbound(Cmpname, 2)) then
rng.offset(0,1) = Cmpname(i, ubound(Cmpname, 2))
Exit For
End if
Next
Next
End Sub
诚然,我只是在手机上写了这个,还没有测试过,但希望错误最少。
答案 3 :(得分:-2)
我刚刚重读了您的问题,并意识到您实际上可能想要一个公式而不是 vba 代码。
如果这是正确的,使用 INDEX MATCH 可能是您最好的选择。
在此示例中,我将假设与上述相同的设置 - col3 具有公司代码,col4 具有公司名称 - 并且此公式可以插入到单元格 B1 中:
=index(D:D,match(left(A1,2),C:C,0))
然后您可以填充 col2 中的其余条目。
同样,没有测试就凭记忆完成,所以希望它是对的。