Board logo

標題: [發問] 不連續的資料範圍抓取 [打印本頁]

作者: owen06    時間: 2013-8-14 09:42     標題: 不連續的資料範圍抓取

請問我有一筆資料要選取,但是內容並沒有連續,如圖所示:

[attach]15771[/attach]

我想要自動抓取有資料的範圍,以圖來說的話就是A2:C9
我有查到版上教的Range([a2], [a65536].End(xlUp)).Select,
可是這只能抓A欄,要怎麼涵蓋到C欄我就不會了…

然後又試另一個Range("A2").Select
        Range(Selection, Selection.End(xlDown)).Select
        Range(Selection, Selection.End(xlToRight)).Select
可是這樣只能抓連續的資料,中間有空白的他就會斷掉了@@
想請教該怎麼設定,才能讓系統去判定有資料的範圍呢?煩請賜教,謝謝~
作者: stillfish00    時間: 2013-8-14 09:58

回復 1# owen06
資料是否包含整列空白?
作者: owen06    時間: 2013-8-14 10:10

回復 2# stillfish00

S大你好,以這張圖來說的話,假設A5:C5這整列都空白,也還是整個抓取A2:C9,
然後假如B10新輸入數字,資料範圍就會變成A2:C10,
請問這有辦法達成嗎?謝謝賜教~
作者: stillfish00    時間: 2013-8-14 11:21

本帖最後由 stillfish00 於 2013-8-14 11:24 編輯

回復 3# owen06
  1.   Dim lMaxRow As Long
  2.   
  3.   With ActiveSheet
  4.     lMaxRow = Application.WorksheetFunction.Max(.[A65535].End(xlUp).Row, _
  5.                                                 .[B65535].End(xlUp).Row, _
  6.                                                 .[C65535].End(xlUp).Row)
  7.     .Range("A2:C" & lMaxRow).Select
  8.   End With
複製代碼

作者: owen06    時間: 2013-8-14 12:15

回復 4# stillfish00

s大謝謝你,使用ok,感恩!
作者: sunnyso    時間: 2013-8-14 12:18

用 usedrange 試一下
作者: oobird    時間: 2013-8-14 13:31

可用find方法快速找到最大列號與最大欄號
  1. r = Cells.Find("*", , , , 1, 2).Row
  2. c = Cells.Find("*", , , , 2, 2).Column
  3. Range(Cells(2, 1), Cells(r, c)).Select
複製代碼

作者: owen06    時間: 2013-8-14 14:45

回復 6# sunnyso


sunnyso大,我有用過usedrange,可是他會把表頭一起包起來,所以沒辦法符合需求,不過也謝謝你~

oobird大,你的方法使用過後也可以達成我的需求,謝謝你~
作者: sunnyso    時間: 2013-8-14 15:49

usedrange + offset + resize
作者: stillfish00    時間: 2013-8-14 16:56

回復 7# oobird
好方法,通用!

回復 8# owen06
表頭不是問題,可以其他方法截掉,
usedrange主要問題是其他儲存格有動過格式就可能會包含
例如儲存格底色設定無填滿也會含在內。

如果確定不會動到,才可使用usedrange
作者: terow5310    時間: 2013-8-29 17:08

大大感謝你的分享~~~
作者: Kubi    時間: 2013-9-1 21:50

Range("A2:C" & Cells.SpecialCells(11).Row).Select
作者: owen06    時間: 2013-9-2 08:32

回復 12# Kubi


這個真的厲害!可以順便請教一下SpecialCells(11)這是什麼意思嗎?
作者: Kubi    時間: 2013-9-2 09:28

也可再簡化:
Range("A2", Cells.SpecialCells(11)).Select

SpecialCells(11)=SpecialCells(xlCellTypeLastCell)
作者: GBKEE    時間: 2013-9-2 10:17

回復 13# owen06
[attach]15916[/attach]

[attach]15917[/attach]

[attach]15918[/attach]
作者: oobird    時間: 2013-9-2 13:09

SpecialCells(11) = SpecialCells(xlCellTypeLastCell)
工作表使用範圍的最右下角。
SpecialCells(11).Row參數可在不論那一欄的資料多都可取得最大列號
但還是有盲點,當刪除某些資料後,最大列號還是不會改變!
作者: GBKEE    時間: 2013-9-2 15:10

但還是有盲點,當刪除某些資料後,最大列號還是不會改變!oobird 發表於 2013/9/2 13:09
  1. Option Explicit
  2. Sub Ex()
  3.     Range("A2", UsedRange.SpecialCells(11)).Select
  4. End Sub
複製代碼

作者: owen06    時間: 2013-9-3 10:35

恩~你們實在都好厲害!讓我獲益良多
用版主的語法後,的確就都OK了
如果要指定欄位的話,就用KUBI大教的:
Range("A2:C" & UsedRange.SpecialCells(11).Row).Select




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)