部分单元格包含在表格 Excel 中
Posted
技术标签:
【中文标题】部分单元格包含在表格 Excel 中【英文标题】:Partial Cell include in table Excel 【发布时间】:2016-10-22 23:26:07 【问题描述】:我有一份公司名单,例如:
COCA
COCA COLA
SPRITE
给出了另一个更详细的公司列表。
单元格是列表中至少一个元素的子字符串吗?
COCA COLA USA TRUE
PEPSI FALSE
SPIRIT FALSE
我尝试过近似匹配,但结果是错误的。 我想要这样的东西:
=EQUIV([@Company_long_name];"*"&Table[Company]&"*";0)
感谢阅读
【问题讨论】:
您可以使用像=OR(ISNUMBER(IF(LEN(Sheet1!$A$1:$A$100),SEARCH(Sheet1!$A$1:$A$100,Sheet2!A1))))
这样的数组公式,而在 Sheet2!A1 中是长字符串,而在 Sheet1!A1:A100 中是短字符串...
如果您需要区分大小写,只需将SEARCH
替换为FIND
:)
【参考方案1】:
不止一种方法,选择你更喜欢的一种
方法一公式
=SUM(IFERROR(MATCH("*"&($A$2:$A$4)&"*",$B2,0),0))>0
方法2公式
=LARGE(COUNTIF(B2,"*"&$A$2:$A$4&"*"),1)>0
注意:这是数组公式。它不是单个数组公式,而是每个单元格的单独数组。所以首先将公式放入单个单元格(我的公式从第 2 行开始),然后 CTRL+D 向下填充。
【讨论】:
【参考方案2】:在 VBA 中你可以这样做:
Sub findIfSubString()
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("Tabelle1")
Set ws2 = Worksheets("Tabelle2")
i = 1
Do While ws1.Cells(i, 1) <> ""
j = 1
ws2.Cells(i, 2) = "FALSE"
Do While ws2.Cells(j, 1) <> ""
If InStr(ws2.Cells(i, 1), ws1.Cells(i, 1)) Then
ws2.Cells(i, 2) = "TRUE"
Exit Do
Else
j = j + 1
End If
Loop
i = i + 1
Loop
End Sub
根据您的格式更改您的代码。在您的示例中,“COCA”、“COCA COLA”和“SPRITE”将位于 ws1
的第 1 列中,而其他两个集合将位于 ws2
的第 1 列和第 2 列中
编辑: 代码现在在所有条目的字符串匹配中寻找可能。
【讨论】:
这两个列表可以是任意顺序。我更喜欢一个公式,数据会改变 要与所有短名称进行比较的长名称以上是关于部分单元格包含在表格 Excel 中的主要内容,如果未能解决你的问题,请参考以下文章