頁: [1] 2
|
 |
|
作者
|
主題: 請問不同檔案的資料複製 (閱讀 3524 次)
|
cjc
訪客
|
各位好,我有兩個檔案:
檔案 A : A B C D E 1 物品 公司1 公司2 公司3 公司4 2 001 5 10 3 002 7 12 22
檔案 B : D E...........K 1 公司1 001 15 2 公司2 001 10 2 公司2 002 7 3 公司3 002 12 4 公司4 002 22
由於物品種類有上百種,可否將 A 檔案的資料(15,10,7,12,22....)自動取代或填入 B 檔案呢? 謝謝
|
|
|
|
« 最後編輯時間: 2005-04-11, 10:31:11 由 小誌 »
|
已記錄
|
|
|
|
cjc
訪客
|
真抱歉,不知為何文章貼出來會這樣  回覆: 因為你加太多空白了 >: 不知如何加入表格代碼來排版的話,請先到新手試驗區試驗一下OK 不然你也先預覽一下
|
|
|
|
« 最後編輯時間: 2005-04-11, 10:34:29 由 小誌 »
|
已記錄
|
|
|
|
cjc
訪客
|
真抱歉,我把它做成表格,應該比較清楚了  | A | B | C | D | E | | 1 | 物品 | 公司1 | 公司2 | 公司3 | 公司4 | | 2 | 001 | 15 | 10 | | | | 3 | 002 | | 7 | 12 | 22 |
| C | D | ... | K | | 1 | 公司1 | 001 | | 15 | | 2 | 公司2 | 001 | | 10 | | 3 | 公司2 | 002 | | 7 | | 4 | 公司3 | 002 | | 12 | | 5 | 公司4 | 002 | | 22 |
|
|
|
|
|
已記錄
|
|
|
|
leonchou
論壇維護群
離線
文章: 1160
|
1. 以下範例,兩個檔案需已開啟 2. 檔案名稱依實際情形修改
Sub zz() Set a = Workbooks("檔案A.xls").Sheets(1) Set b = Workbooks("檔案B.xls").Sheets(1) lastrow = a.[A1].End(xlDown).Row lastcol = a.[A1].End(xlToRight).Column rb = 1 For c = 2 To lastcol For r = 2 To lastrow If a.Cells(r, c) <> "" Then b.Cells(rb, 3) = a.Cells(1, c) b.Cells(rb, 4) = a.Cells(r, 1) b.Cells(rb, 11) = a.Cells(r, c) rb = rb + 1 End If Next r Next c End Sub
|
|
|
|
|
已記錄
|
|
|
|
oobird
凸槌的木工
論壇維護群
離線
文章: 4429
|
lenchou兄:很好的變量範例。小弟不懂後面的rb = rb + 1,及Next r、Next c與 只有寫"Next "的差別,能啟蒙一下嗎?謝謝。
|
|
|
|
|
已記錄
|
結廬待慧君
|
|
|
cjc
訪客
|
感謝 lenchou兄回覆  不過由於檔案B的 C ,D 列資料已經存在,只需將 K 列的空白資料填入,須要怎麼修改呢? 謝謝!
|
|
|
|
|
已記錄
|
|
|
|
yem
高中生
離線
文章: 110
|
感謝 lenchou兄回覆  不過由於檔案B的 C ,D 列已經存在,只需將 K 列的空白資料填入,須要怎麼修改呢? 謝謝! C,D資料已存在, 這麼好啊~~ 那用公式更方便了 K1公式 =INDIRECT("[Book1]Sheet1!R"&MATCH(D1,[Book1]Sheet1!$A$1:$A$11,0)&"C" &MATCH(C1,[Book1]Sheet1!$A$1:$E$1,0),0) 公式中: BooK1換成檔案A的名字, $A$1:$A$11,及$A$1:$E$1就要視真正的資料改變範圍長度了
|
|
|
|
|
已記錄
|
What doesn't kill you will only make you stronger
|
|
|
cjc
訪客
|
感謝 yem 兄回覆  我將公式套入k1-k5,所得到的答案都是一樣  如果有上千筆的資料,可以將公式一次套入嗎?
|
|
|
|
|
已記錄
|
|
|
|
yem
高中生
離線
文章: 110
|
感謝 yem 兄回覆  我將公式套入k1-k5,所得到的答案都是一樣  如果有上千筆的資料,可以將公式一次套入嗎? 這是k1的公式,k2~k5要從k1往下拉哦!! 
|
|
|
|
|
已記錄
|
What doesn't kill you will only make you stronger
|
|
|
leonchou
論壇維護群
離線
文章: 1160
|
lenchou兄:很好的變量範例。小弟不懂後面的rb = rb + 1,及Next r、Next c與 只有寫"Next "的差別,能啟蒙一下嗎?謝謝。
就是照制式的用法而已... 節錄自VBA輔助說明 -- 一. For...Next 陳述式以特定次數來重複執行一段陳述式。 語法 For counter = start To end [ Step step] [其他陳述式] [ Exit For] [其他陳述式] Next [counter] 附註 如果您省略 Next 陳述式中的計數器,仍可以執行迴圈,但如果 Next 陳述式比它相對應的 For 陳述式先執行,則會產生錯誤。 二. For Each...Next 陳述式針對一個陣列或集合中的所有元素,重複執行一段陳述式。 語法 For Each element In collection [其他陳述式] [ Exit For] [其他陳述式] Next [element] 附註 如果您省略 Next 陳述式中的元素,仍可以執行迴圈,但如果 Next 陳述式比它相對應的 For 陳述式先執行,則會產生錯誤。
我倒還沒遇過 " Next 陳述式比它相對應的 For 陳述式先執行" 而發生錯誤的情形, 所以我一向只在 For...Next 後面加 counter ,以和 For Each...Next 陳述式有所區別而已,如同Help所說:除非遇到錯誤,否則加與不加都沒差。 如果要說加有什麼好處,大概就是不易出錯,而且如此例中使用多個 For ... Next 的巢狀迴圈時,較容易分辨哪個是哪個。 使程式碼較易於閱讀,是個好習慣。 把輔助說明有的東西拿來發教學文章,如果沒有值得一書的心得,沒什麼意思對吧?忘了說 rb = rb + 1 的意思... rb 是做為 B檔案列號的變數,一列一列接著往下填入資料。 A檔案已有 For ... Next 的計數變量做為欄列號, B檔案的欄號是固定,而列號與 A檔不同,所以另設變數。
|
|
|
|
« 最後編輯時間: 2005-04-12, 23:46:32 由 leonchou »
|
已記錄
|
|
|
|
|
頁: [1] 2
|
|
|
|