標題:
[發問]
不同欄位中數字的比對
[打印本頁]
作者:
kyotogoeric
時間:
2014-9-4 21:12
標題:
不同欄位中數字的比對
今天在工作中接到一個令我想不出辦法的難題,不知是否有人能提供好方法
問題是這樣的。
在兩個不同欄位中有兩組長度不同的數字,可是我只想比對兩組數字中的某兩個數字
例如:30020
15
0000,04HE
15
-100。
這兩個欄位中的數字長度不同,但我只想比對標記紅色的數字是否相同,若不同則數字反紅
請教各位,有這樣的公式可寫嗎?
作者:
luhpro
時間:
2014-9-6 03:25
本帖最後由 luhpro 於 2014-9-6 03:28 編輯
今天在工作中接到一個令我想不出辦法的難題,不知是否有人能提供好方法
請教各位,有這樣的公式可寫嗎?
kyotogoeric 發表於 2014-9-4 21:12
若想要現成的沒有,
因為 Excel 系統自帶的公式其作用主體為 "儲存格", 沒有針對其內個別文數字做處理的公式.
不過可以自己做一個 : 底下函數使用的方式為 : =CompNumber(A1,B1) , 傳回值為布林值
Function CompNumber(rng1 As Range, rng2 As Range) As Boolean
Dim iNum1%, iNum2%, iPos%, iLen%
Dim rTar As Range
CompNumber = False
Set rTar = rng1
iLen = Len(rTar)
For iPos = 1 To iLen
With rTar.Characters(Start:=iPos, Length:=2).Font
If .ColorIndex = 3 Then Exit For
End With
Next
If iPos <> iLen Then
iNum1 = CInt(Mid(rTar, iPos, 2))
Else
Exit Function
End If
Set rTar = rng2
iLen = Len(rTar)
For iPos = 1 To iLen
With rTar.Characters(Start:=iPos, Length:=2).Font
If .ColorIndex = 3 Then Exit For
End With
Next
If iPos <> iLen Then
iNum2 = CInt(Mid(rTar, iPos, 2))
Else
Exit Function
End If
If iNum1 = iNum2 Then CompNumber = True
End Function
複製代碼
而若想當比對不符就直接將文字變為紅色 :
Private Sub cbComp_Click()
ChkNum [A1], [B1]
End Sub
Sub ChkNum(rng1 As Range, rng2 As Range)
Dim iNum1%, iNum2%, iPos%, iLen%
Dim lRow&
Dim rTar As Range
Set rTar = rng1
lRow = 0
While rng1.Offset(lRow) <> ""
iLen = Len(rTar)
For iPos = 1 To iLen
With rTar.Characters(Start:=iPos, Length:=2).Font
If .ColorIndex = 3 Then Exit For
End With
Next
If iPos <> iLen Then
iNum1 = CInt(Mid(rTar, iPos, 2))
Else
Exit Sub
End If
Set rTar = rng2.Offset(lRow)
iLen = Len(rTar)
For iPos = 1 To iLen
With rTar.Characters(Start:=iPos, Length:=2).Font
If .ColorIndex = 3 Then Exit For
End With
Next
If iPos <> iLen Then
iNum2 = CInt(Mid(rTar, iPos, 2))
Else
Exit Sub
End If
If iNum1 <> iNum2 Then
rng1.Offset(lRow).Font.ColorIndex = 3
rng2.Offset(lRow).Font.ColorIndex = 3
End If
lRow = lRow + 1
Set rTar = rng1.Offset(lRow)
Wend
End Sub
複製代碼
[attach]19103[/attach]
作者:
kyotogoeric
時間:
2014-9-6 21:14
感謝回覆
我要研究一下,因為我是初學者,還不知道怎麼將上述的自製公式帶入我的excel內
作者:
kyotogoeric
時間:
2014-9-17 10:07
除了VBA我這幾天也利用函數做了一個簡單的比對方式,也是可以比較出欄位中兩欄位數字是否相同
IF(RIGHT(LEFT(欄位,自左邊算數字長度),比對數字)=RIGHT(欄位,自左邊算數字長度),比對數字),"ok","NG")
作者:
ML089
時間:
2014-9-17 13:59
回復
4#
kyotogoeric
例如:30020150000,04HE15-100。
這兩個欄位中的數字長度不同,但我只想比對標記紅色的數字是否相同,若不同則數字反紅
1. 資料及規則說明太少,若以目前來看
A1 30020150000
B1 04HE15-100
C1 公式 =IF(MID(A1,6,2)=MID(B1,5,2),"同","不同")
標記紅色,可以用 設定格式化條件來標示(整個儲存格用顏色提醒)
設定公式 =MID($A1,6,2)<>MID($B1,5,2)
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)