如果下一个单元格文本与当前单元格文本匹配,则返回另一个单元格中的相邻值

我试图想出一个脚本或公式,采取多个单元格与相似的文本,并以特定的格式返回相邻单元格的值。

例:

A | B ----------------------------- 123 | Sample String I ----------------------------- 456 | Sample String II ----------------------------- 789 | Sample String III ----------------------------- 987 | Sample String IV ----------------------------- 654 | Not String I ----------------------------- 

在列B中,采取string“样本string”(或任何单词),并在列A中获取与它相邻的数字,然后转到B列下面的下一个单元格,如果这些单词是相同的连接列A中的数字输出。

输出应该是这样的:

[Sample String,(123,456,789,987)]

if B=LIKE(next cell then CONCATENATE ADJACENT Cell(A), Output Cell(C)

一个问题是,有几百个重复,几乎但不完全是,我有多个工作簿要通过。 所以我也想,也许有一种方法来比较文本,如果文本匹配超过70%,那么这样做,否则创build一个新的条目或东西。 我真的不知道。 如果还有其他的程序可以做得更好,那么我可以接受一些想法。

Excel在最近的Office 365更新和在线应用程序中只介绍了TEXTJOIN():

 =TEXTJOIN(",",TRUE,IF(ISNUMBER(SEARCH("Sample String",$B$1:$B$5)),$A$1:$A$5,"")) 

在这里输入图像说明


对于早期版本放入C1并复制下来:

 =IF(ISNUMBER(SEARCH(LEFT(B2,FIND("}}}",SUBSTITUTE(B2," ","}}}",LEN(B2)-LEN(SUBSTITUTE(B2," ",""))))-1),B1)),A1&"," &C2,A1) 

在这里输入图像说明

这将使每个新的子string的第一个正确的值。 然后使用一个VLOOKUP()如:

 =VLOOKUP("Sample Strin" & "*",$B$1:$C$5,2,FALSE) 

将返回正确的值:

在这里输入图像说明

使用Instr()

 Sub Button1_Click() Dim LstRw As Long, Rng As Range, c As Range, s As String, f As String s = "Sample String" LstRw = Cells(Rows.Count, "B").End(xlUp).Row Set Rng = Range("B1:B" & LstRw) For Each c In Rng.Cells If InStr(c, s) Then f = f & c.Offset(0, -1) & "," End If Next c MsgBox Mid(f, 1, Len(f) - 1) End Sub