Board logo

標題: 字串比對,顯示字串中不同之處並高亮處理 [打印本頁]

作者: marklos    時間: 2022-8-15 15:00     標題: 字串比對,顯示字串中不同之處並高亮處理

請問字串比對的問題
在使用公式比對出A&B的差異後,是否可以將差異字元做出高亮顯示

[attach]35151[/attach]
作者: samwang    時間: 2022-8-16 11:36

請問字串比對的問題
在使用公式比對出A&B的差異後,是否可以將差異字元做出高亮顯示
marklos 發表於 2022-8-15 15:00


只會VBA,請測試看看,謝謝
Sub test()
Dim Arr, i&, j%, T1, T2
Arr = Range([b1], [a65536].End(3))
For i = 1 To UBound(Arr)
    If Arr(i, 1) <> Arr(i, 2) Then
    j = 1
    Do While Len(Arr(i, 2)) + 1 > j
        T1 = Mid(Arr(i, 1), j, 1): T2 = Mid(Arr(i, 2), j, 1)
        If T1 <> T2 Then
            Cells(i, 2).Characters(j, 1).Font.ColorIndex = 3
        End If
        j = j + 1
    Loop
    End If
Next
End Sub
作者: marklos    時間: 2022-8-16 19:42

回復 2# samwang


    感謝~~測試正常
請問如果要比對的是B欄位跟C欄位的話,要如何修改?
作者: samwang    時間: 2022-8-16 21:41

回復  samwang


    感謝~~測試正常
請問如果要比對的是B欄位跟C欄位的話,要如何修改?
marklos 發表於 2022-8-16 19:42

如紅字,謝謝
Sub test()
Dim Arr, i&, j%, T1, T2
Arr = Range([c1], [b65536].End(3))
For i = 1 To UBound(Arr)
    If Arr(i, 1) <> Arr(i, 2) Then
    j = 1
    Do While Len(Arr(i, 2)) + 1 > j
        T1 = Mid(Arr(i, 1), j, 1): T2 = Mid(Arr(i, 2), j, 1)
        If T1 <> T2 Then
            Cells(i, 3).Characters(j, 1).Font.ColorIndex = 3
        End If
        j = j + 1
    Loop
    End If
Next
End Sub
作者: marklos    時間: 2022-8-17 15:15

回復 4# samwang
[attach]35162[/attach]

請問如果A欄位也要顯示差異的話,該如何修改?
謝謝
作者: Andy2483    時間: 2022-8-18 11:07

回復 5# marklos


    建議前輩提供能表達處裡格式後的用途情境 範例檔 或 再補充說明
1.因為1樓跟5樓的需求有小矛盾(dFn8,dfn8 如果在1樓是右邊f紅字,在5樓卻是左邊F紅字)
2.後學猜測前輩應該是想要兩邊都紅字! 改了一下 學習到samwang前輩的程式碼 供前輩參考

Sub test()
Dim Arr, i&, j%, T1, T2
Range([b1], [a65536].End(3)).Font.ColorIndex = 1
Arr = Range([b1], [a65536].End(3))
For i = 1 To UBound(Arr)
    If Arr(i, 1) <> Arr(i, 2) Then
    j = 1
    Do Until (Len(Arr(i, 1)) < j And Len(Arr(i, 2)) < j)
        T1 = Mid(Arr(i, 1), j, 1): T2 = Mid(Arr(i, 2), j, 1)
        If T1 <> T2 Then
            Cells(i, 1).Characters(j, 1).Font.ColorIndex = 3
            Cells(i, 2).Characters(j, 1).Font.ColorIndex = 3
        End If
        j = j + 1
    Loop
    End If
Next
End Sub
作者: marklos    時間: 2022-8-18 16:29

回復 6# Andy2483


確實是後來想要兩邊都用紅字來顯示差異~感謝幫忙與分享




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)