返回列表 上一主題 發帖

不同工作表找對比資料,工作表名稱不固定

本帖最後由 Andy2483 於 2024-2-26 14:59 編輯

回復 6# 198188


    AM-JO58-01-1, AM-JO58-01-2, AM-JO58-02
這幾個表的E欄是隱藏起來的,你的手動比對有誤
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP




    �堶�5個資料都是一樣的,不過客戶提供的版本有儲存格格式問題,所以導致對不上。
我意思是問前輩,有沒有一句程式,可以在核對資料的時候,跳過這種格式問題?

TOP

回復 4# 198188


    題意看起來是5欄全同才標"Y",
範例盡量是有手動處理好想要的結果附在範例裡
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 3# Andy2483


    大致可以,不過有個部分有問題,AM-JO58-01-1, AM-JO58-01-2, AM-JO58-02 的欄B 因爲不是數字,是文字,所以導致前面1-16列大部分都有,但是結果卻寫無。

TOP

回復 1# 198188

謝謝前輩發表此主題與範例
後學藉此帖練習陣列與字典,學習方案如下,請前輩參考

Option Explicit
Sub TEST()
Dim Arr, Brr, Crr, Z, i&, j%, R&, s%, T$, T2$, T3$
Set Z = CreateObject("Scripting.Dictionary")
Brr = Range(Sheets(1).[H12], Sheets(1).[A65536].End(3))
ReDim Crr(1 To UBound(Brr), 1 To 2)
For i = 1 To UBound(Brr)
   T3 = Trim(Brr(i, 3))
   If T3 = "" Then GoTo i01
   For j = 4 To 8
      T = T & "/" & Val(Brr(i, j))
   Next
   Z(T3 & T) = i
   T = ""
   Crr(i, 1) = "N"
i01: Next
For s = 2 To Sheets.Count
   Arr = Range(Sheets(s).[G13], Sheets(s).[A65536].End(3))
   For i = 1 To UBound(Arr)
      T2 = Trim(Arr(i, 2))
      If T2 = "" Then GoTo i02
      For j = 3 To 7
         T = T & "/" & Val(Arr(i, j))
      Next
      R = Z(T2 & T)
      If R <> 0 Then Crr(R, 1) = "Y": Crr(R, 2) = Sheets(s).Name & "/ " & i + 12 & "列"
      T = ""
i02: Next
Next
Sheets(1).[I12].Resize(UBound(Crr), 2) = Crr
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 1# 198188


    這個主要是卡在工作表的不固定數量及名稱問題上。

TOP

        靜思自在 : 一句溫暖的話,就像往別人身上灑香水,自己會沾到兩三滴。
返回列表 上一主題