返回列表 上一主題 發帖

如何判斷為同一組(進階問題)

本帖最後由 准提部林 於 2018-8-13 17:33 編輯

Sub NumberCode()
Dim Arr, i&, xD, T$, TC$
Set xD = CreateObject("Scripting.Dictionary")
Arr = Range([D2], [A65536].End(3))
For i = 1 To UBound(Arr)
  T = Arr(i, 1) & Arr(i, 2):  TC = xD(T)
  If TC = "" Then xD(T) = "|" & Arr(i, 4): GoTo 101
  If TC <> "|" & Arr(i, 4) Then xD(T) = "異常"
101: Next i
For i = 1 To UBound(Arr)
  T = Arr(i, 1) & Arr(i, 2): Arr(i, 1) = ""
  If xD(T) = "異常" Then Arr(i, 1) = "x"
Next i
[G2].Resize(UBound(Arr)) = Arr
End Sub
 
 

TOP

回復 9# s7659109


With Range("D2:D" & [A65536].End(3).Row)
  .Formula = "=IF(ISNA(VLOOKUP(C2,accnum,2,)),"""",VLOOKUP(C2,accnum,2,))"
  .Value = .Value
End With
Range("E:E").Replace 0, "", Lookat:=xlWhole

TOP

本帖最後由 准提部林 於 2018-8-14 20:23 編輯

回復 11# s7659109


VLOOKUP不用排序
原公式會需要排序, 是省了第四個參數(TRUE/FALSE)
VLOOKUP(找查值, 區域, 欄位, TRUE/FALSE)  用FALSE就不須排序(精確比對)

VLOOKUP(C2,accnum,2,FALSE)
VLOOKUP(C2,accnum,2,0)
VLOOKUP(C2,accnum,2,)
三個公式道理相同

TOP

回復 13# s7659109

TC = xD(T)  
>> 取字典檔的 ITEM 值給 TC

If TC = "" Then xD(T) = "|" & Arr(i, 4): GoTo 101  
>> 如果TC是空值, 表示尚未帶入xD, 則給予D欄的值為ITEM,
    D欄文字前加"|", 是考慮D欄可能是空白的,  就會與 IF TC = "" 又產生循環

If TC <> "|" & Arr(i, 4) Then xD(T) = "異常"
>> 比較 TC 與 當前列D欄文字, 若不相同, 即是異常

TOP

        靜思自在 : 謊言像一朵盛開的鮮花,外表美麗,生命短暫。
返回列表 上一主題