返回列表 上一主題 發帖

相同姓名之條件下 部分資料轉移?

回復 1# yangjie
  1. Sub ex()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. With Workbooks("1.xls").Sheets(3)
  4.   For Each a In .Range(.[C2], .[C65536].End(xlUp))
  5.    d(a & "") = Array(a.Offset(, 3).Value, a.Offset(, 4).Value, a.Offset(, 6).Value)
  6.   Next
  7. End With
  8. With Workbooks("2.xls").Sheets(5)
  9.   For Each a In .Range(.[B2], .[B65536].End(xlUp))
  10.    a.Offset(, 1).Resize(, 3).Value = d(a & "")
  11.   Next
  12. End With
  13. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 3# yangjie
1.為何要用A & ""
因為Dictionary物件是用關鍵字作索引,然後對應一個資料內容
例如:d(A & "")=Array(a1,b1,c1)
其中A & ""就是關鍵字,在程式中的A是儲存格型態,加上&""是把其內容轉成文字型態
當然如果使用d(A.Value)也行
而Array(a1,b1,c1)就是該索引對應的內容
2.根據問題1的回答就可知道,是先讀取所有資料到Dictionary物件
再來只需將對硬的內容從Dictionary物件中讀取出來
3.不連續儲存格當然無法用Resize來指定範圍
可以使用
A.Offset(,1)=d(A & "")(0)
A.Offset(,3)=d(A & "")(1)
A.Offset(,9)=d(A & "")(2)
這樣一一給值的方法
學海無涯_不恥下問

TOP

回復 6# yangjie

d(A & "")=array(A.Offset(,n1(1)).value,A.Offset(,n1(2)).value,A.Offset(,n1(3)).value,....
學海無涯_不恥下問

TOP

        靜思自在 : 願要大、志要堅、氣要柔、心要細。
返回列表 上一主題