返回列表 上一主題 發帖

[發問] 關於尋找"最後一列(行)"

[發問] 關於尋找"最後一列(行)"

本帖最後由 thps51134 於 2011-11-3 17:13 編輯

請教
".UsedRange.SpecialCells(xlLastCell).Row"的意義
以及, 怎樣可以做到更動這樣抓取到的final row (col.) ?

======
使用此方法抓取最後一列

    RowEnd = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row

整個檢查過後
資料真的只有到將近 300筆
但是RowEnd卻一直顯示為 559

有聽過這個方法其實是抓"被做過動作的格子"
於是一路拉到第65532列 (只是選取)後, 儲存再開啟
依舊是顯示最後一列為第559列

=====

謝謝!

本帖最後由 GBKEE 於 2011-11-3 20:24 編輯

回復 1# thps51134
UsedRange 屬性  傳回 Range 物件,此物件代表指定工作表中的已用範圍。唯讀。
SpecialCells(  參數  ) 方法 傳回 Range 物件,此物件代表與指定型態及值相符合的所有儲存格。Range 物件。
參數 : xlCellTypeLastCell。已用範圍的最後一個儲存格   
UsedRange.SpecialCells(xlLastCell).Row ->傳回工作表中的已用範圍中指定型態及值相符合的(最後一個儲存格)所有儲存格的列號

於是一路拉到第65532列 (只是選取)後, 儲存再開啟
依舊是顯示最後一列為第559列
  
如在65532列 有輸入資料 會傳回 65532 的

TOP

整個檢查過後
資料真的只有到將近 300筆
但是RowEnd卻一直顯示為 559
thps51134 發表於 2011-11-3 17:11

我猜測可能是第 559 列(或許其他儲存格也有)有空白字造成,
若果真如此那麼你需要做的只有一件事 :
1. 找到(有資料)的最底下的一筆資料
2. 從此筆資料的下一列開始 Mark 整列
3. 按住滑鼠左鍵不放一直拖曳到第 600 列
4. 將 Mark 的區域全部刪除
最後再試看看是否結果變正確了.

這方法我通常都用在預覽文件時發現有多餘的空白頁時.

TOP

動作指的是"實際,有成效"的動作,不包括選取。

在第600列任一儲存格輸入資料,然後選它並清除內容。
ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row 會是 600。

凡走過必留下痕跡。

TOP

本帖最後由 thps51134 於 2011-11-8 17:56 編輯

感謝各位的回覆以及替我做了觀念澄清

GBKEE大的解釋詳盡到令人感動

感謝 luhpro大的建議,
之前只有做過"delete"而沒有試過"刪除"
大筆一刪, 問題解決!

謝謝 e123chen幫我釐清什麼是我查到的資料所描述的"動作"
:)

TOP

我之前一直怕說會有中間有空格產生的情況,用"xlLastCell"沒辦法找到所有的欄位
之後有人教我用cells(65536,j).end(xlup)
結果好多了,不知道這樣是否與您所理解的相同

TOP

本帖最後由 thps51134 於 2011-11-21 10:34 編輯

回復 6# smooth131


    就我目前使用的狀況...空格是不影響"xlLastCell"的結果啦^^"

 這次遇到的問題是
    "實際上沒有資料卻抓到說有資料" 不是 "實際上有資料卻抓說那列沒資料"
 感謝您的分享^^

TOP

有一個現象可以解釋"實際上沒有資料卻抓到說有資料",
那就是"有空白儲存格被設定了格式",
因此會將此儲存格納入UsedRange中。
所以你單純用delete是沒有用的,
必須清除儲存格格式或全部才有解。

TOP

UsedRange.SpecialCells(xlLastCell).Row
懂了!

TOP

        靜思自在 : 天上最美是星星,人生最美是溫情。
返回列表 上一主題