Board logo

標題: [發問] 如何讓A、B二欄字串比對成功呢? [打印本頁]

作者: dechiuan999    時間: 2014-3-11 21:34     標題: 如何讓A、B二欄字串比對成功呢?

各位大大好:
[attach]17747[/attach]
小弟有A、B二欄的文字字串,
也先利用 TRIM來取出字串比對,
但還是無法成功比對。不知應如何
可逹成比對文字呢?
語法如下:
Sub aa()   
    Dim mSht1 As Worksheet
    Dim mRng As Range, mRng1 As Range
    Dim mStr1$, mStr2$
   
    Set mSht1 = Worksheets(1)
    With mSht1
        Set mRng1 = .Range("a2", .Range("a" & .Rows.Count).End(xlUp))
        For Each mRng In mRng1
            mStr1 = Trim(mRng.Value)
            mStr2 = Trim(mRng.Offset(, 1))
            mRng.Offset(, 2) = IIf(StrComp(mStr1, mStr2, vbTextCompare) = 0, "TRUE", "FALSE")
        Next
    End With
End Sub


謝謝各位大大!
作者: owen06    時間: 2014-3-12 09:04

回復 1# dechiuan999


因為VBA裡面的TRIM,似乎只會去消除頭尾的空白格,文字中間的空白格不理會。
而EXCEL函數裡的TRIM則可以處理這個問題。
所以你只要在二個TRIM的前面加個『APPLICATION.』,問題就解決了。
  1. Sub aa()
  2.     Dim mSht1 As Worksheet
  3.     Dim mRng As Range, mRng1 As Range
  4.     Dim mStr1$, mStr2$
  5.    
  6.     Set mSht1 = Worksheets(1)
  7.     With mSht1
  8.         Set mRng1 = .Range("a2", .Range("a" & .Rows.Count).End(xlUp))
  9.         For Each mRng In mRng1
  10.             mStr1 = Application.Trim(mRng.Value)
  11.             mStr2 = Application.Trim(mRng.Offset(, 1))
  12.             mRng.Offset(, 2) = IIf(StrComp(mStr1, mStr2, vbTextCompare) = 0, "TRUE", "FALSE")
  13.         Next
  14.     End With
  15. End Sub
複製代碼

作者: dechiuan999    時間: 2014-3-12 13:29

回復 2# owen06


    謝謝大大如此詳細說明。
TRIM的用法,還有二種方式。
小弟原以為一般APPLICATION
在VBA是可省略。
今天才了解到有如此差異。

感恩大大!




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