標題:
[發問]
請問UsedRange.Rows.Count與End(xlUp).Row在處理上結果會有所不同嗎?
[打印本頁]
作者:
c_c_lai
時間:
2012-4-3 09:26
標題:
請問UsedRange.Rows.Count與End(xlUp).Row在處理上結果會有所不同嗎?
請教大大:
ActiveSheet.UsedRange.Rows.Count 與 Range("B" & Rows.Count).End(xlUp).Row
兩種方式在實務處理上,其最後執行結果會有所不同嗎? 執行速度何者為優?
作者:
register313
時間:
2012-4-3 11:06
回復
1#
c_c_lai
ActiveSheet.UsedRange.Rows.Count 與 Range("B" & Rows.Count).End(xlUp).Row
1.兩種方式在實務處理上,其最後執行結果會有所不同嗎?
(1) ActiveSheet.UsedRange.Rows.Count 所有使用儲存格所組成四方形區域之最後一列之列號
(2) Range("B" & Rows.Count).End(xlUp).Row B欄所使用儲存格之最後一格之列號
兩者傳回之列號有時相同,有時不同,依實際儲存格使用情形而定
應舉範例才能確定
2. 執行速度何者為優?
這應該沒那麼重要吧
只要整個程式的語法,邏輯沒問題,大部份執行速度都可以接受的
作者:
c_c_lai
時間:
2012-4-3 11:49
資料列累積多了,執行速度難道不會受影響嗎? 況且程式碼本身不只是只有執行此項而已,
譬如它還同時段要執行 DDE 的資料匯入,執行速度相差無幾是都可以接受的。
如大大所言,應該是 Range("B" & Rows.Count).End(xlUp).Row 方式稍快些,
Block 與 Lines 之處理或許後者為快吧! 多謝您的指導!
作者:
c_c_lai
時間:
2012-4-3 20:22
經過實際資料處理後,我把觀察兩種不同方式執行之結果敘述如下,以期幫助其他尚須瞭解的同學們來共同分享:
' 目前實際完整匯入資料範圍為: A1:Z1712 ; 但是從 X1:Z2000 欄位儲存的是計算公式(估計最多資料項為 2000 列,所以從 X1713:Z2000 其欄位值均為 0)
' 傳回 2000 列,轉述register313回帖:所有使用儲存格所組成四方形區域之最後一列之列號
' 傳回 1712 列,轉述register313回帖:B 欄所使用儲存格之最後一格之列號
Sub Test()
Dim total_row As Single
Cells(2, 22).Value = ActiveSheet.UsedRange.Rows.Count
Cells(2, 23).Value = Range("B" & Rows.Count).End(xlUp).Row
End Sub
複製代碼
' 執行結果:
'
' V (22) W (23)
' 1 --------------------
' 2 2000 1712 ' 1712 為實際匯入資料之行數
' 3
複製代碼
所以在此時實務處理上, 如採以 ActiveSheet.UsedRange.Rows.Count 方式,尚須再次過濾部分空白與非真實匯入資料的問題列。
再次感謝大大的解說!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)