语法search列中的string
考虑到这一点,我可能需要一些VBA,但如果我能避免它,这将是伟大的。
我有以下excel表单(见图片)
目标:我想在列B中列C的列C的合成search的结果。在我的情况下,列B将yes,tata,well
列A有I2010等。
我已经尝试了一个vlookup
但I2010
是针对特定的string,例如I2010
或IS-IPI
不是其中的一部分。
任何build议都欢迎。
谢谢
用法
andylookup(A1, C1:D4, "Not Found!")
码:
Function andyLookup(strInput As String, rngTable As Range, defaultvalue As String) As String Dim strArray() As String Dim i As Integer Dim strOut As String Dim temp1 As Variant strArray = Split(strInput, ",") For i = 0 To UBound(strArray) temp1 = Application.VLookup(strArray(i), rngTable, 2, 0) 'if not found, apply default value If IsError(temp1) Then strOut = strOut & defaultvalue & "," Else strOut = strOut & temp1 & "," End If Next 'remove trailing comma strOut = Left(strOut, Len(strOut) - 1) andyLookup = strOut End Function
结果
yes,toto,tata,well
在B1中,input:
=IF(FIND(C1,$A$1)>0,D1,"")
然后拖下来。 这将取决于你想要在你的工作表中做什么。 需要更多的解释来更加适应你的需求,但是这至less给你一个出发点。
或者使用VBA的Find
Sub Main() MsgBox LookupStr(Range("A1"), Range("B1:B4")) End Sub Function LookupStr(rng1 As Range, rng2 As Range) As String Dim rng3 As Range Dim rng4 As Range For Each rng3 In rng2 Set rng4 = rng1.Find(rng3.Value, , xlFormulas, xlPart) If Not rng4 Is Nothing Then LookupStr = LookupStr & rng3.Offset(0, 1) & vbNewLine Next End Function