- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 137
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2025-6-7
               
|
[轉貼] For...Next 與 For Each...Next 迴圈的基本概念
本帖最後由 Hsieh 於 2010-5-10 17:42 編輯
cjc
訪客
請問不同檔案的資料複製
« 於: 2005-04-11, 10:22:45 »
--------------------------------------------------------------------------------
各位好,我有兩個檔案:
檔案 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 由 小誌 » 向板主檢舉 61.229.1.159 (?)
cjc
訪客
Re: 請問不同檔案的資料複製
« 回覆文章 #1 於: 2005-04-11, 10:24:45 »
--------------------------------------------------------------------------------
真抱歉,不知為何文章貼出來會這樣
回覆:
因為你加太多空白了 >:
不知如何加入表格代碼來排版的話,請先到新手試驗區試驗一下OK
不然你也先預覽一下
« 最後編輯時間: 2005-04-11, 10:34:29 由 小誌 » 向板主檢舉 61.229.1.159 (?)
cjc
訪客
Re: 請問不同檔案的資料複製
« 回覆文章 #2 於: 2005-04-11, 11:34:40 »
--------------------------------------------------------------------------------
真抱歉,我把它做成表格,應該比較清楚了
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
向板主檢舉 61.229.1.159 (?)
leonchou
論壇維護群
離線
文章: 1214
Re: 請問不同檔案的資料複製
« 回覆文章 #3 於: 2005-04-11, 23:25:54 »
--------------------------------------------------------------------------------
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
向板主檢舉 203.79.168.37 (?)
--------------------------------------------------------------------------------
BEFORE ASKING, YOU SHOULD RTFH, RTFM, STFW...
oobird
凸槌的木工
論壇維護群
離線
文章: 5270
Re: 請問不同檔案的資料複製
« 回覆文章 #4 於: 2005-04-12, 08:21:38 »
--------------------------------------------------------------------------------
lenchou兄:很好的變量範例。小弟不懂後面的rb = rb + 1,及Next r、Next c與 只有寫"Next "的差別,能啟蒙一下嗎?謝謝。
向板主檢舉 61.217.102.234 (?)
--------------------------------------------------------------------------------
結廬待慧君
cjc
訪客
Re: 請問不同檔案的資料複製
« 回覆文章 #5 於: 2005-04-12, 10:52:21 »
--------------------------------------------------------------------------------
感謝 lenchou兄回覆
不過由於檔案B的 C ,D 列資料已經存在,只需將 K 列的空白資料填入,須要怎麼修改呢?
謝謝!
向板主檢舉 61.229.1.159 (?)
yem
訪客
Re: 請問不同檔案的資料複製
« 回覆文章 #6 於: 2005-04-12, 11:49:55 »
--------------------------------------------------------------------------------
引用自: cjc 於 2005-04-12, 10:52:21
感謝 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就要視真正的資料改變範圍長度了
向板主檢舉 218.175.222.56 (?)
cjc
訪客
Re: 請問不同檔案的資料複製
« 回覆文章 #7 於: 2005-04-12, 12:52:36 »
--------------------------------------------------------------------------------
感謝 yem 兄回覆
我將公式套入k1-k5,所得到的答案都是一樣
如果有上千筆的資料,可以將公式一次套入嗎?
向板主檢舉 61.229.1.159 (?)
yem
訪客
Re: 請問不同檔案的資料複製
« 回覆文章 #8 於: 2005-04-12, 13:38:48 »
--------------------------------------------------------------------------------
引用自: cjc 於 2005-04-12, 12:52:36
感謝 yem 兄回覆
我將公式套入k1-k5,所得到的答案都是一樣
如果有上千筆的資料,可以將公式一次套入嗎?
這是k1的公式,k2~k5要從k1往下拉哦!!
向板主檢舉 218.175.222.56 (?)
leonchou
論壇維護群
離線
文章: 1214
Re: 請問不同檔案的資料複製
« 回覆文章 #9 於: 2005-04-12, 23:41:45 »
--------------------------------------------------------------------------------
引用自: oobird 於 2005-04-12, 08:21:38
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 » 向板主檢舉 203.79.168.37 (?) |
|