[VBA]請問這樣多重迴圈邏輯應該怎麼寫

看板Office作者 (小建)時間12年前 (2013/07/30 10:51), 編輯推噓0(008)
留言8則, 4人參與, 最新討論串1/1
我是用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 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.205.138.242 ※ 編輯: zchien 來自: 123.205.138.242 (07/30 11:15)

07/30 12:07, , 1F
這種問題應該使用公式即可, 另外你sheet1的日期看起來
07/30 12:07, 1F

07/30 12:07, , 2F
是字串格式, 而不是日期格式喔!
07/30 12:07, 2F

07/30 13:34, , 3F
sheet1的日期..我用DateValue轉成正確日期了
07/30 13:34, 3F

07/30 13:36, , 4F
因為我資料量可能有幾千筆..所以用公式不太適合..
07/30 13:36, 4F

07/30 14:35, , 5F
『樞紐分析表』可以試看看。
07/30 14:35, 5F

07/30 20:34, , 6F
你的count=1應該要在for n和 for m的中間,很明顯你現在的
07/30 20:34, 6F

07/30 20:35, , 7F
在換日期的時候沒有將count歸1而是在換A或B的時候歸1
07/30 20:35, 7F

07/30 20:38, , 8F
所以A在換日期的時候,會將之前的count繼續累加直到換B
07/30 20:38, 8F
文章代碼(AID): #1HzoeOUp (Office)
文章代碼(AID): #1HzoeOUp (Office)