返回列表 上一主題 發帖

[發問] [字典物件]列出各工作表特定值問題

[發問] [字典物件]列出各工作表特定值問題

各位前輩好,
小弟目前在練習時遇到一個問題,
簡述問題如下:
假設有一活頁簿,共有4個工作表,3個含有資料,第4個做為顯示結果用,
(其實當然是希望不只3個,但目前僅做為練習用,故先假定3個)
前3個工作表內均有3欄,
第1欄為編號,第2欄為名稱,第3欄為數據.
希望可以將3個工作表內第2欄名稱為"A"的數據找出,刪除重複數據並貼至第4個工作表,第1欄則重新編號.
小弟有試著修改前輩的程式碼,但結果不甚理想,不知問題出在哪裡,
斗膽上來發問,還望前輩不吝指點迷津,十分感謝.


附上檔案及程式碼以供前輩參考:

註:"希望結果"分頁的A-C欄是所期望的運行結果,
但目前程式實際運行的結果會顯示在"希望結果"分頁的F至H欄.

20161101-列出各工作表特定值問題.zip (13.12 KB)
  1. '此為參考板上前輩程式碼進行修改,非我原創
  2. '論壇網址:http://forum.twbts.com/
  3. Public Sub test()
  4. Dim arr(), brr(), myD, mNum

  5. Set myD = CreateObject("scripting.dictionary")

  6. ReDim brr(1 To 65536, 1 To 3)
  7. Sheets(1).Activate
  8. For Each sht In Sheets

  9. arr = Range("a2:c" & Cells(Rows.Count, 1).End(xlUp).Row)

  10. If sht.Name <> "希望結果" Then

  11. sht.Activate

  12. n = n + 1

  13. For i = 1 To UBound(arr)

  14. T = arr(i, 3)

  15. If myD(T) = 1 Then GoTo 101

  16. If arr(i, 2) <> "A" Then GoTo 101

  17. For j = 2 To 3

  18. brr(n, 1) = n
  19. brr(i, j) = arr(i, j)

  20. Next j

  21. myD(T) = 1

  22. 101:

  23. Next i
  24. End If

  25. Next sht

  26. Sheets(4).Activate

  27. If n > 0 Then [f2].Resize(n, 3) = brr

  28. End Sub
複製代碼

回復 2# 准提部林

非常感謝淮提部林前輩的指正,
小弟十分慚愧,覺得自己進展太慢了,還得努力學習.
再次感謝前輩無私指點.

TOP

        靜思自在 : 人生不一定球球是好球,但是有歷練的強打者,隨時都可以揮棒。
返回列表 上一主題