返回列表 上一主題 發帖

[發問] 大筆資料篩選,速度很慢(篩選及排列)

[發問] 大筆資料篩選,速度很慢(篩選及排列)

本帖最後由 lifedidi 於 2013-4-30 15:42 編輯

大大好:

小弟有一個工時的EXCEL檔,交給同事使用,

起初100筆or500筆資料都可以很順,功能也都ok!

但是當資料數來到10000筆以上時,開始變慢了!

查詢一筆資料要等很久,雖然還是跑得出來..

請教大大有沒有更好的寫法呢?

有幾個要點:
1.資料要篩選出並貼在Sheet2上
2.貼於Sheet2的資料需要照日期排序
3.統計篩選後資料中 R欄 時間的總和

測試檔資料數1.6W筆,公司電腦要跑2~3分鐘,
有點久...請大大小心:L
測試用.rar (480.01 KB)

GBKEE 大可否將檔案寄至a0935005312@gmail.com,感謝您

TOP

正需要此功能,可是小學生無法下載附件研究

TOP

回復 11# lifedidi
可能是2003結構沒有2007緊密(龐大) 所以運算速度會快些
11# 篩選資料可以多條件篩選嗎?假設同時要篩選:專案編號、職工編號、日期‧‧‧的條件。(請參考EXCEL檔案第二種查詢)
參考附件      Book2.zip (657.03 KB)
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 9# GBKEE


大大好:

請問大大是2003的嗎?

今天有用其他同事2003版本的run,結果就正常多了。

不知道是版本問題還是電腦問題,謝謝大大的幫忙。

TOP

本帖最後由 lifedidi 於 2013-5-2 19:25 編輯

回復 9# GBKEE


    to GBKEE大大

小弟的語法:

【A.於sheet1篩選資料】→【B.於sheet2貼上資料】→【C.sheet2做時間加總】

※小弟在於B.會跑很久,下班回到家也是同樣情形,情形大概如附檔(影片)

3000筆資料.rar (886.57 KB) 30000筆資料.rar (416.4 KB)

真邪門XD

GBKEE大大的語法:

【於sheet1篩選資料】→【於sheet1時間加總】

※請問大大篩選資料可以多條件篩選嗎?假設同時要篩選:專案編號、職工編號、日期‧‧‧的條件。(請參考EXCEL檔案第二種查詢)

──────────────────────────────────────────────────────────────
Hsieh大大的程式碼也會有同樣的問題(複製貼上需要時間),

但是我將時間加總的語法改成Hsieh大大的語法,比較簡潔,哈XD

──────────────────────────────────────────────────────────────
GBKEE大大太神了吧,運算時間竟然也可以算的出來...

TOP

本帖最後由 GBKEE 於 2013-5-2 16:54 編輯

回復 8# lifedidi
不會罷!!  
CPU 雙處理器 3.40 GHz  1GB的RAM
測試 3000筆資料 費時1秒 , 30000筆資料 費時4秒.
  1. Private Sub CommandButton1_Click()  '查詢鈕
  2.     Dim d1 As Date, d2 As Date, T As Date
  3.     Dim Srng As Range, Crng As Range, Orng As Range
  4.     T = Time
  5. ' 程式碼.... 為何不用4# Hsieh 超版的程式碼
  6. '程式碼....
  7. '程式碼....
  8.     TextBox1.Value = Format(hh, "00") & ":" & Format(mm, "00")
  9.     MsgBox Application.Text(Time - T, "[SS]秒")  '顯示執行過程的時間
  10. End Sub
複製代碼
如在30000筆資料的工作表上用自動篩選取的資料會更快的
  1. Private Sub ComboBox1_Change()  '選擇 下拉式選單1 立即顯示總總時間;可不用查詢鈕
  2.     Dim T As Date
  3.     T = Time
  4.     If ComboBox1.ListIndex = -1 Then   '不在下拉式選單的清單內
  5.         TextBox1 = ""
  6.         MsgBox "專案編號 編號 " & ComboBox1 & " 不正確"
  7.     Else
  8.         Application.ScreenUpdating = False
  9.         With Sheets("工時資料庫")
  10.             .Range("a6").AutoFilter Field:=4, Criteria1:=ComboBox1            'AutoFilter:  原資料庫上自動篩選.
  11.             With .Range("r:r").SpecialCells(xlCellTypeVisible)
  12.                 TextBox1.Value = Application.Text(Application.Sum(.Cells), "[hh]:mm")
  13.             End With
  14.             .AutoFilterMode = False
  15.         End With
  16.         Application.ScreenUpdating = True
  17.         MsgBox Format(Time - T, " SS 秒")
  18.     End If
  19. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 6# GBKEE


大大好:

不知道是因為公司電腦關係還是其他元素,
如同上面的回覆,

30000筆資料是快速的copy上sheet (上方的回覆內容打錯50000,更正為30000)

3000筆資料卻是一筆一筆的copy上sheet

(一筆一筆貼上是誇飾法..請見諒)

TOP

回復 4# Hsieh

大大好:

因為同事需要【工時加總(單、多條件篩選)】【資料瀏覽】的功能,所以目前小弟先以這功能去加強。

請參考附件。

【建立在相同狀況下】
50,000筆資料 處理數度快
3,000筆資料 處裡數度卻較慢

請大大抽空時測試看看,謝謝。

小弟繼續研究XD

    qq.rar (953.9 KB)

TOP

回復 5# lifedidi
run起來,資料一筆一筆貼上,貼到五千筆需要不少時間,
為何要 資料一筆一筆貼上???
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 犯錯出懺悔心,才能清淨無煩惱。
返回列表 上一主題