2016-10-15 6 views
1

VBAを使用しないで(私はVBAで行うことができますが、マクロがそれを行うことができるかどうか試してみたいが、まだ)、Excelマクロ:現在のセルにサブストリングが別のセルとしてあるかどうかをチェックする

私は2枚持っています。

ライトシートBがよく、そのようなような一つのセル内のタイトルのようなより多くの文字で名前の列を含む

シートAは、のように、その細胞のような名前の列を含みますBにAがシートAの1対多の関係(ライトである

氏ライト

シートMr.Wrightで複数の行があるかもしれませんシートB)。

達成するために、いくつかの機能でマクロを作成する方法、シートBであれば:「Mr.Wrightは」(私はそれについて考える方が簡単な場合がありますシートA.

に細胞内の部分文字列を持っているかどうかを確認しますシートBから一度に行うことができる場合は、シートBからマッチするすべてのマッチをINDEXまたはMATCHで最初に検索します)

+0

申し訳ありません。気にしないでください。私は最も適切な方法は、VBAを使用することだと思う。 – Yang

答えて

1

sub_in_nameという名前のマクロを作成します。

Option Explicit 

Sub sub_in_name() 

Dim x, i As Long 

Dim endofcells1, endofcellsmany As Long 

endofcells1 = WorksheetFunction.CountA(Range("A:A")) 
endofcellsmany = WorksheetFunction.CountA(Range("B:B")) 

For x = 1 To endofcells1 
    For i = 1 To endofcellsmany 


If (InStr(1, Cells(i, 2), Cells(x, 1), vbTextCompare)) Then 
Cells(i, 2 + x).Value = "True" 
Else 
Cells(i, 2 + x).Value = "False" 
End If 

    Next i 
Next x 


End Sub 

Intr(start, SearchStr, SearchInStr, vbaoption)がこの機能を実現する主な機能です。 Cells(i, 2 + x)は、列 "A"の空でないセルの数に基づいて索引付けされます。

各試行のセル内容を必ずクリアしてください。列「B」の後。コラム "" &コラム "B" に入れたとえば

、あなたが列 "C:D" を取得します

Column "A"  Column "B"  Column "C" Column "D" 

Wright   Mr. Wright  True   False 

Roger   Wright Jr.  True   False 

        Wright the Ivth. True   False 

        Sally    False   False 
+0

VBAなしでは、まだ、本当にありがとうクレジット。 – Yang

0

ほぼ同じロジックを。もともと私は既存のマクロ関数を使ってそれをやりたかったのです。最後に、次のようなカスタマイズされた関数を作成するようになりました。

スタックオーバーフローの別のスレッドに触発されました。私はuser3553260のような完全なチェックを行うコードを作った。しかし、効率性がここで一番重要な問題ではないかどうかを考えると、機能も悪い選択ではないと私は考えている。

Function LookupName(lookupValue As Variant, lookupRange As Range) As String 

Dim r As Long 
Dim c As Long 

Dim s As String 

s = "No" 

For r = 1 To lookupRange.Rows.Count 
    For c = 1 To lookupRange.Columns.Count 

     If Not IsEmpty(lookupRange.Cells(r, c).Value) Then 

      If InStr(LCase(lookupValue), LCase(lookupRange.Cells(r, c).Value)) Then 

      s = "Yes" 
      Exit For 

      End If 

     End If 

    Next 
Next 

LookupName = s 

End Function 
関連する問題