如果单元格包含,则返回具有更多值的特定值并返回可能性

时间:2021-03-15 16:03:47

标签: google-sheets google-sheets-formula

我有一张包含以下列的工作表: 第 1 列:包含“TS001”、“TS002”、“DR001”、“MS002”等形式的文本。 开头的 2 个字母是制造商名称的代码,例如“MS=Microsoft”。 对于第二列,我想要一个公式,通过第一列并搜索这些字母,然后返回制造商的完整名称。

例如,它应该是这样的:

<头>
第 1 列 第 2 列
MS001 微软
TS002 乐购
DR001 博士。胡椒
TS003 乐购

这样的事情有可能吗?

非常感谢!

4 个答案:

答案 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 中的其余条目。

同样,没有测试就凭记忆完成,所以希望它是对的。

相关问题