昱得資訊工作室
麻辣學園
歡迎光臨, 訪客. 請先 登入註冊一個帳號.
您忘了 啟用您的帳號嗎?
2009-01-07, 04:23:19
世界展望會助學計劃
首頁 說明 登入 註冊 贊助論壇 想當作者?
新聞: 為增進論壇品質,全面更新硬體設備,經費有限,請各位踴躍贊助論壇!!


+  麻辣家族討論區
|-+  MS Office 系列
| |-+  EXCEL
| | |-+  Excel程式區 (版主: hsieh)
| | | |-+  請問不同檔案的資料複製
0 會員 以及 1 訪客 正在閱讀本篇主題. « 上一篇主題 下一篇主題 »
頁: 1 [2] 向下 列印
作者 主題: 請問不同檔案的資料複製  (閱讀 3785 次)
leonchou
論壇維護群
*
離線 離線

文章: 1204


Re: 請問不同檔案的資料複製
« 回覆文章 #10 於: 2005-04-13, 00:25:12 »

感謝 lenchou兄回覆 Smiley
不過由於檔案B的 C ,D 列資料已經存在,只需將 K 列的空白資料填入,須要怎麼修改呢?
謝謝!

基本上 3 樓的寫法是完全依照A檔的內容寫到B檔,比較乾脆也比較保險;
B檔 C,D 欄已存在的情形,則必須確保資料沒有遺漏才行。
資料量較大的時候不建議用公式解決,大量的公式運算/重算會使你感覺很慢。
尤其是跨檔案的公式連結更是麻煩一堆。

然而使用程式時,MATCH 函數在這裡確實是好用的。

Sub zz()
Set a = Workbooks("檔案A.xls").Sheets(1)
Set b = Workbooks("檔案B.xls").Sheets(1)
Set aRange = a.[A1].CurrentRegion 'A檔案A1的連續範圍
lastrow = b.[A1].End(xlDown).Row
For rb = 1 To lastrow
  r = Application.MATCH(b.Cells(rb, 4),aRange.Columns(1),0)
  c = Application.MATCH(b.Cells(rb, 3),aRange.Rows(1),0)
  b.Cells(rb, 11) = a.Cells(r, c)
Next rb
End Sub
已記錄

oobird
凸槌的木工
論壇維護群
*
離線 離線

文章: 4679


Re: 請問不同檔案的資料複製
« 回覆文章 #11 於: 2005-04-13, 09:50:37 »

謝謝您費神解說,小弟還是沒學會這樣的變量,一直在用Range(.........).Copy的方式。請看例子,執行後為何會階梯式排下去呢?

[附件已被管理員刪除]
已記錄

結廬待慧君
cjc
訪客


電子郵件
Re: 請問不同檔案的資料複製
« 回覆文章 #12 於: 2005-04-13, 11:10:43 »

非常感謝 lenchou兄回覆 Smiley

不過我又遇到一個問題,真不好意思 Embarrassed
如果檔案B資料有遺漏並且有不同的物品(4,5行).是否能做什麼判斷,才能將K列的值正確填入呢?

CDK
1公司1115
2公司2110
3公司227
4
5公司13
6公司3212
7公司4222

再次謝謝!
已記錄
leonchou
論壇維護群
*
離線 離線

文章: 1204


Re: 請問不同檔案的資料複製
« 回覆文章 #13 於: 2005-04-13, 12:52:01 »

非常感謝 lenchou兄回覆 Smiley

不過我又遇到一個問題,真不好意思 Embarrassed
如果檔案B資料有遺漏並且有不同的物品(4,5行).是否能做什麼判斷,才能將K列的值正確填入呢?

那就用 3 樓的程式 -- 我在 10 樓第一行就提到了。
已記錄

leonchou
論壇維護群
*
離線 離線

文章: 1204


Re: 請問不同檔案的資料複製
« 回覆文章 #14 於: 2005-04-14, 09:20:32 »

謝謝您費神解說,小弟還是沒學會這樣的變量,一直在用Range(.........).Copy的方式。請看例子,執行後為何會階梯式排下去呢?

這是欄/列寫入順序的問題。
For c 和 For r 兩個迴圈哪個在外、哪個在內,關係到先欄後列or先列後欄的順序 (簡稱循欄or循列)。
你的例子和本主題不同,是一列一列依序寫入,應該用循列 (先列後欄) 的寫入順序,也就是 For r 要在外圈。

至少心中要有一個簡單的流程順序,才不易搞錯 --
第一列 欄1 欄2 欄3 欄4 欄5 ...
第二列 欄1 欄2 欄3 欄4 欄5 ...
第三列 欄1 欄2 欄3 欄4 欄5 ...

另外 rb = rb + 1 的位置也影響到是否造成 "階梯式" 的錯誤結果。

如下修正後的代碼所示,For r 要在外圈,而且等一整列的資料寫完後才 rb + 1,繼續寫下一列。

Sub 寫入()
Set a = Sheets(1)
Set b = Sheets(2)
lastrow = a.[a6].End(xlDown).Row
rb = b.[a1].End(xlDown).Row + 1
For r = 6 To lastrow
 For c = 1 To 11
  If a.Cells(r, 4) <> "" Then
   b.Cells(rb, c) = a.Cells(r, c)
  End If
 Next c
 rb = rb + 1
Next r
End Sub
已記錄

oobird
凸槌的木工
論壇維護群
*
離線 離線

文章: 4679


Re: 請問不同檔案的資料複製
« 回覆文章 #15 於: 2005-04-14, 10:22:31 »

多謝leonchou兄,有點懂又有點不懂,一樣的程式碼不同的排列,產生不同的結果,看來小小程式學問蠻深的。小弟會好好學,因為這樣的程式比Copy&Paste的執行效率高,又不會跳動。太感謝了!
已記錄

結廬待慧君
頁: 1 [2] 向上 列印 
« 上一篇主題 下一篇主題 »
自訂搜尋
跳到:  

本頁花了 0.269 秒, 以及 21 次的資料庫查詢.