2017-01-06 2 views
1

Я хотел бы сравнить символы в ячейках и вернуть их. Например,Excel/как сравнивать символы в ячейках

А1 = (111, 222, 444, 555)

В1 = (111, 222, 333, 444, 555, 666)

Затем я хотел бы видеть остатки в ячейке C1,

C1 = (333, 666)

есть ли способ, что я могу сделать с функциями Excel? Нужно ли мне это делать с кодом VBA? Заранее спасибо!

+2

Вы, вероятно, потребуется VBA UDF для этого - вы можете использовать Split (), чтобы разбить каждую ячейку на набор чисел, а затем сравнить два набора. –

+0

Тим, я не знал, что означал UDF, и просто искал его. (https://www.techonthenet.com/excel/formulas/split.php) Я думаю, что могу сделать очень простой VBA, но до сих пор не знаю, что делать дальше, есть ли у вас какие-либо мысли? Спасибо, – zzaewon

+0

Этот вопрос находится под заголовком «Связанный» справа. http://stackoverflow.com/questions/12069890/how-do-compare-text-in-excel-cells-to-see-if-same-words-are-found?rq=1 Взгляните на код там. –

ответ

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

Смежные вопросы