返回列表 上一主題 發帖

不同工作表內的資料比對與填入.

回復 6# linshin1999


            2).For Each E In Sheet1.Range("A:A").SpecialCells(xlCellTypeConstants)
            中如果只這樣寫  Sheet1.range("A:A")  和  Sheet1.Range("A:A").SpecialCells(xlCellTypeConstants) 的差別在那裡? 不是都會掃描一遍嗎?
這是不同的,SpecialCells(xlCellTypeConstants)是常數儲存格,也就是會略過空格。你用錄製巨集方式,選取A欄/常用/尋找與取代/特殊/常數看看程式碼就知道
        3).I = Application.Match(E, Sheet2.Range("A:A"), 0)
            這樣一行這會在Sheet2.Range("A:A")掃描出相等的資嗎?
這是利用工作表函數MATCH找到對應位置,若沒找到正確資料會傳回錯誤植
        4.)If IsNumeric(I) Then E.End(xlToRight).Offset(, 1) = Sheet2.Cells(I, "B")
            為什麼要作做  IsNumeric(I) 這個動作 呢?
如果 Application.Match(E, Sheet2.Range("A:A"), 0)能找到對應值,表示I彙是個長整數,所以是數值,沒找到就應是錯誤植,可用ISERROR函數測試。
您對EXCEL VBA的熱忱,小弟十分敬佩,不過在此提醒您,VBA還是要由EXCEL基本操作及功能著手,才能事半功倍。
學海無涯_不恥下問

TOP

回復 1# MRSA
  1. Sub Ex()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. With Sheets(2)
  4. For Each a In .Range(.[A1], .[A65536].End(xlUp))
  5.    d(a.Value) = a.Offset(, 1)
  6. Next
  7. With Sheets(1)
  8. For Each a In .Range(.[A1], .[A65536].End(xlUp))
  9.    a.Offset(, 3) = d(a.Value)
  10. Next
  11. End With
  12. End With
  13. End Sub
複製代碼
學海無涯_不恥下問

TOP

        靜思自在 : 我們最大的敵人不是別人.可能是自己。
返回列表 上一主題