返回列表 上一主題 發帖

[發問] 在同一列同時比對兩欄資料方法

回復 20# Hsieh

太謝謝Hsieh版大!!這是我想要的結果~
也謝謝smouse0220和GBKEE兩位..
在颱風假中還要動腦~
腦細胞應該死了不少...
萬分感謝

TOP

回復 20# Hsieh


版大想請教一下,目前找不到資料是忽略掉(在最後一頁上找不到任何的資料),是否可以改成找不到資料是否還是可以顯示第一頁的品號,其它欄位顯示"空白"或是"查無資料"?

TOP

回復 20# Hsieh


順便想請教,在第17列的位置用了IF但是為什麼下面不用END IF做結束
而18列的程式碼又是代表什麼意思呢?

TOP

本帖最後由 Hsieh 於 2012-8-6 22:38 編輯

回復 23# 假面超人
  1. Sub nn()
  2. Dim Ar(), A As Range, B As Range
  3. With Sheets("Sheet1")
  4. For Each A In .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp))  '第一頁A2以下做迴圈
  5.   For Each Sh In Sheets(Array("Sheet2", "Sheet3")) '原資料所在工作表
  6.   With Sh
  7.      For Each B In .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp))  '在A2以下儲存格做迴圈
  8.         If B = A Then  '跟第一頁A欄儲存格做比對,如果符合
  9.            ReDim Preserve Ar(s)  '擴大陣列
  10.            Ar(s) = Array(B.Value, B.Offset(, 1).Value, B.Offset(, 2).Value, B.Offset(, 4).Value)  '將值寫入陣列
  11.            s = s + 1  '準備下一次擴大陣列
  12.         End If
  13.      Next
  14.   End With
  15.   Next
  16.   With Sheets("最終結果")
  17.      If s > 0 Then .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(s, 4).Value = Application.Transpose(Application.Transpose(Ar)) Else _
  18. .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(, 4).Value =Array(A.value,"","","")  '如果陣列有內容,就將陣列寫入結果,否則寫入一列空白
  19.      Erase Ar: s = 0  '清空陣列,並準備下一個陣列初始大小
  20.   End With
  21. Next
  22. End With
  23. End Sub
複製代碼
17列的If陳述式,因為If...Then...在同一行所以不須End If詳細語法請參考VBA說明
學海無涯_不恥下問

TOP

回復 24# Hsieh
原來還有這樣用法,我沒看過...
謝謝您~~
還在努力學習中!!

TOP

        靜思自在 : 每天無所事事,是人生的消費者,積極、有用才是人生的創造者。
返回列表 上一主題