如何從定義的範圍中查找最後一個單元格的位置?單元格不必包含任何數據,但必須是來自某個範圍的最右邊和最下方的單元格。從範圍VBA中查找最後一個單元格
Set rngOrigin = wksOrigin.Cells(IntFirstRow, IntFirstColumn).CurrentRegion
我希望收到
Cells(i,j)
如何從定義的範圍中查找最後一個單元格的位置?單元格不必包含任何數據,但必須是來自某個範圍的最右邊和最下方的單元格。從範圍VBA中查找最後一個單元格
Set rngOrigin = wksOrigin.Cells(IntFirstRow, IntFirstColumn).CurrentRegion
我希望收到
Cells(i,j)
嘗試以下
rngOrigin.End(xlDown).End(xlRight)
,或者您可以使用CurrentRegion
和計數的行和列,並使用Offset
你的情況,因爲你想在012中找到最右邊和最下面的單元格(定義爲工作表),您可以使用SpecialCells(xlCellTypeLastCell)
來獲取最後一個單元行和列。
i = wksOrigin.Cells.SpecialCells(xlCellTypeLastCell).Row ' <-- get last row number
j = wksOrigin.Cells.SpecialCells(xlCellTypeLastCell).Column ' <-- get last column number
如果你要調試的結果,你可以添加:
MsgBox "Last row at " & i & ", last column at " & j
我想找到當前區域的Range的最後一個單元格,而不是整個Worksheet。如果工作表包含超出當前區域的數據,我不想包含它們。 – Fajka
你定義的範圍是什麼? –
也許你是在此之後:
'absolute indexes from cell A1
With rngOrigin
i = .Rows(.Rows.count).row
j = .Columns(.Columns.count).Column
End With
'relative indexes from rngOrigin upleftmost cell
With rngOrigin
i = .Rows(.Rows.count).row - .Rows(1).row + 1
j = .Columns(.Columns.count).Column - .Columns(1).Column + 1
End With
我處理它在下面的代碼,但你的言論很有幫助。謝謝。
intLastRow = rngOrigin.Cells(1, 1).Row + rngOrigin.Rows.Count - 1
intLastCol = rngOrigin.Cells(1, 1).Column + rngOrigin.Columns.Count - 1
那麼你應該採用我的「絕對」代碼,並避免重複'rngOrigin'並使用(對我來說)更適當的範圍規格 – user3598756
如果你想有一個定義範圍的絕對值最後一個單元格,不管它是否有任何內容,這裏有一個簡單的解決方案
Dim InputRng As Range 'define a range for the test'
Set InputRng = Range("$F$3:$F$15")
MsgBox InputRng(1).Address & ":" & InputRng(InputRng.Cells.Count).Address 'This would output the absolute address of defined range'
雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,提供鏈接供參考。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/18793890) – Dez
@Dez:謝謝你的提示,我會在有空的時候這樣做。 –
@我已經回覆了德茲,當我有時間時,我會做。我正在使用執行類似功能的Excel中的UDF,並且先檢查了堆棧,但找不到任何有用的答案。最終我從我的答案中鏈接了另一個網站的解決方案。我已經測試過它,它工作得很好。 –
這可能爲一個簡單的情況下工作http://www.cpearson.com/excel/cells.htm與設置myrange =範圍(「A1:A10」),並使用該鏈接重新索引一個範圍的情況下,並使用myrange.Rows.Count – barlop