按條件拆分Excel表格兩個(gè)單元格中的數(shù)字

字號(hào):

有朋友要求Excel工作表的A1單元格和B1單元格中有兩個(gè)數(shù)字,這兩個(gè)數(shù)字有一部分相同,現(xiàn)在要找出其中相同的數(shù)字并寫入單元格C1,找出A1中有而B1中沒有的數(shù)字并寫入單元格D1,找出B1中有而A1中沒有的數(shù)字并寫入單元格E1。
    如下面的工作表圖片:
    
    我不知道給出的數(shù)字是否都是按這樣的規(guī)律,即第一個(gè)原始數(shù)據(jù)的后面幾位數(shù)與第二個(gè)原始數(shù)據(jù)的前面幾位數(shù)相同。如果是這個(gè)規(guī)律的話,則可以就這個(gè)具體的例子給出下面的代碼來實(shí)現(xiàn):
    Sub SeparateNumber()
    Dim strFirst As String
    Dim strResult As String
    Dim StartNum As Integer
    Dim EndNum AsString
    Dim i As Integer, j As Integer
    strFirst = Left(Range(”B1″), 1)
    StartNum = InStr(1, Range(”A1″), strFirst)
    j = 1
    For i = StartNum To Len(Range(”A1″))
    EndNum = Mid(Range(”A1″), i, 1)
    If EndNum = Left(Range(”B1″), j) Then
    j = j + 1
    End If
    Next i
    If j > 1 Then
    strResult = Mid(Range(”A1″), StartNum, i - 1)
    End If
    ‘單元格C1中的數(shù)據(jù)
    Range(”C1″).Value = strResult
    ‘單元格D1中的數(shù)據(jù)
    Range(”D1″).Value = Left(Range(”A1″), StartNum - 1)
    ‘單元格E1中的數(shù)據(jù)
    Range(”E1″).Value = Right(Range(”B1″), Len(Range(”B1″)) - j)
    End Sub
    代碼很簡單,只是運(yùn)用了幾個(gè)VBA函數(shù)。
    討論:
    其實(shí)代碼可以進(jìn)一步簡化,因?yàn)閂BA還有一個(gè)數(shù)組函數(shù)(Split函數(shù))。
    如果要將其變?yōu)橥ㄓ玫模瑒t可將上述代碼轉(zhuǎn)化為自定義函數(shù),并用相對(duì)量代替代碼中的硬編碼。
    兩個(gè)單元格中的數(shù)字如果不是按上面提到的規(guī)律,則可能兩個(gè)單元格中的數(shù)字中間部分相同,而其它部分不同;或者一個(gè)單元格中的數(shù)字結(jié)尾部分和另一個(gè)單元格中的數(shù)字的中間部分相同;等等。