如果下一个单元格文本与当前单元格文本匹配,则返回另一个单元格中的相邻值
我试图想出一个脚本或公式,采取多个单元格与相似的文本,并以特定的格式返回相邻单元格的值。
例:
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