2017-01-06 8 views
1

セル内の文字を比較して残りを返したいと思います。例えば、Excel /セル内の文字を比較する方法

A1 =(111、222、444、555)

B1 =(111、222、333、444、555、666)

そして、私が残って見たいですセルC1で、

C1 =(333、666)

私はExcelの関数で行うことができます方法はありますか? VBAコードでこれを行う必要がありますか?前もって感謝します!

+2

あなたは、おそらくこのためにVBA UDFが必要になりましょうただ、モジュールに上記のコードを追加して、あなたはこののようにそれを使用することができます - あなたはスプリットを使用することができます( )、各セルを一連の数値に分割して、2つのセットを比較します。 –

+0

ティム、私はUDFが何を意味しているのかわからず、ちょうどそれを探知しました。 (https://www.techonthenet.com/excel/formulas/split.php)私は非常に基本的なVBAを行うことができると思いますが、次に何をすべきか分かりません。ありがとう、 – zzaewon

+0

この質問は右の "関連する"見出しの下にあります。 http://stackoverflow.com/questions/12069890/how-do-i-compare-text-in-excel-cells-to-see-if-same-words-are-found?rq=1そこにコードする。 –

答えて

1

@ Timのコメントに基づいて、1つの可能なUDFがこのように見えます。

Public Function GetDiff(rngFirst As Range, rngSecond As Range) As String 

    Dim arrFirst 
    Dim arrSecond 

    Dim lRctr1 As Long 
    Dim lRctr2 As Long 

    Dim bMatch  As Boolean 
    Dim strResult As String 

    arrFirst = Split(IIf(Len(rngFirst) >= Len(rngSecond), rngFirst, rngSecond), ",") 
    arrSecond = Split(IIf(Len(rngFirst) <= Len(rngSecond), rngFirst, rngSecond), ",") 

    For lRctr1 = LBound(arrFirst) To UBound(arrFirst) 
    bMatch = False 
     For lRctr2 = LBound(arrSecond) To UBound(arrSecond) 
      If (arrFirst(lRctr1) = arrSecond(lRctr2)) Then 
       lRctr2 = UBound(arrSecond) + 1 
       bMatch = True 
      End If 
     Next 

     If Not bMatch Then 
      strResult = strResult & arrFirst(lRctr1) & "," 
     End If 
    Next 

    If Len(strResult) > 0 Then 
     strResult = Mid(strResult, 1, Len(strResult) - 1) 
    End If 

    GetDiff = strResult 

End Function 

のは、セルC1 =GetDiff(A1,B1)

+1

cyboashu、これはあなたに戻ってあまりにも遅くないことを願っています!本当にありがとうございます、これは金としてうまくいきます! – zzaewon

+0

np ....決して遅くはないより:) – cyboashu

+0

それは本当です、素晴らしい日ですサー! – zzaewon