作者zchien (小建)
看板Visual_Basic
標題Fw: [VBA]請問這樣多重迴圈邏輯應該怎麼寫
時間Tue Jul 30 11:13:26 2013
我是用EXCEL 2007
sheet1有下面資料:
第一欄是日期+時間,第二欄是AAAA或是BBBB之類的資料
02/04/2013 00:01:46 AAAA
02/04/2013 00:02:15 AAAA
02/05/2013 00:02:44 AAAA
02/05/2013 23:00:02 BBBB
02/06/2013 23:00:33 BBBB
02/06/2013 23:01:17 BBBB
02/08/2013 23:19:18 BBBB
02/08/2013 23:19:18 BBBB
sheet2有下面資料:
2013/2/4 2013/2/5 2013/2/6 2013/2/7 2013/2/8
AAAA
BBBB
我想統計sheet1裡面有多少AAAA和BBBB,分別將數量寫入到
sheet2所相對應的欄位日期下面
例如上面範例,我希望顯示結果如下
2013/2/4 2013/2/5 2013/2/6 2013/2/7 2013/2/8
AAAA 2 1
BBBB 1 2 2
我用了一個很麻煩的方式..
我分別將sheet1和sheet2內容都讀成陣列
寫了三重回圈...去比較..但是計算上有點小問題
會跑出下面結果
2013/2/4 2013/2/5 2013/2/6 2013/2/7 2013/2/8
AAAA 2 3
BBBB 1 3 5
我暫時還想不到更好寫法..而且錯誤的地方還想不到怎麼改...想請大家幫幫忙
謝謝
我跑回圈的程式碼如下
count = 1
For n = 2 To Sheet2_Row
For m = 1 To Sheet1_Row
If Sheet2資料(n) = Sheet1資料(m) Then
For k = 1 To i - 1
If Sheet2時間(k) = Sheet1時間(m) Then
Worksheets("sheet2").Cells(n, k + 1) = count
count = count + 1
End If
Next k
End If
Next m
count = 1
Next n
--
※ 編輯: zchien 來自: 123.205.138.242 (07/30 11:14)
1F:→ MOONRAKER:只要一個迴圈就好卻寫到三層 你也真鮮 07/30 13:18
2F:→ zchien:請問要怎麼樣寫成一個迴圈呢..可以幫忙說明嗎??謝謝 07/30 13:31
3F:→ tsongs:無論如何都要3次沒錯阿 我有時也會苦惱要怎寫這類 07/30 19:12
4F:→ tsongs:我會想最少次讀取 能不能只讀一次 07/30 19:16
5F:→ tsongs:有時寫入記憶體會快些 用ARRAY 07/30 19:19
6F:→ tsongs:直接在EXCEL上比對會比較慢 量大時很明顯 07/30 19:20
8F:→ zchien:謝謝Marty..我受教了..這段程式碼..我寫了快100行.. 07/31 14:27
9F:→ zchien:想不到竟然只要幾10行即可..只是我的資料變數比較多.. 07/31 14:28
10F:→ zchien:所以不是只有AAAA,BBBB...而且有幾千筆...但很感謝幫忙.. 07/31 14:29
11F:→ tsongs:不讀AAAA跟日期當然可以 要讀就不行 各要讀一次 所以3次 07/31 15:00
12F:→ MOONRAKER:三次和三層是不一樣的。 08/02 17:23