3 回答

TA貢獻1877條經驗 獲得超1個贊
我喜歡這樣:
ActiveSheet.UsedRange.Rows.Count
列數也可以這樣做。對我來說,永遠工作。但是,如果您在另一列中有數據,那么上面的代碼也會考慮它們,因為該代碼正在查找工作表中的所有單元格范圍。

TA貢獻1796條經驗 獲得超4個贊
最安全的選擇是
Lastrow = Cells.Find("*", [A1], , , xlByRows, xlPrevious).Row
Lastcol = Cells.Find("*", [A1], , , xlByColumns, xlPrevious).Column
不要使用UsedRange或SpecialCells(xlLastCell)或End(xlUp)。如果您以前刪除了一些行,所有這些方法可能會導致錯誤的結果。Excel仍會計算這些不可見的單元格。
如果您刪除單元格,保存工作簿,關閉然后重新打開,這些方法將再次起作用。

TA貢獻1893條經驗 獲得超10個贊
這將獨立于Excel版本(2003、2007、2010)運行。前一張紙有65536行,而后兩張紙則有大約一百萬行。Sheet1.Rows.Count根據版本返回此數字。
numofrows = Sheet1.Range("A1").Offset(Sheet1.Rows.Count - 1, 0).End(xlUp).Row
或同等但較短
numofrows = Sheet1.Cells(Sheet1.Rows.Count,1).End(xlUp)
這將從列A的底部向上搜索第一個非空單元格,并獲取其行號。
如果您在其他列中有更深的數據,這也可以使用。因此,例如,如果您獲取示例數據并在單元格FY4763中寫了一些內容,則上面的內容仍將正確返回9(而不是4763,涉及該UsedRange屬性的任何方法均會錯誤地返回)。
請注意,實際上,如果要使用單元格引用,則應使用以下內容。您不必先獲取行號,然后構建單元格引用。
Set rngLastCell = Sheet1.Range("A1").Offset(Sheet1.Rows.Count - 1, 0).End(xlUp)
請注意,此方法在某些情況下會失敗:
最后一行包含數據
最后一行被隱藏或過濾掉
因此,請注意,如果您打算將1,048,576行用于這些操作!
- 3 回答
- 0 關注
- 1761 瀏覽
添加回答
舉報