50

シート内の行を含む最後のデータを見つけるためのこの方法を見つけました:

ws.Range("A65536").End(xlUp).row

シート内の列を含む最後のデータを見つけるための同様の方法はありますか?

4

7 に答える 7

93

これを行う方法はたくさんあります。最も信頼できるのは検索です。

Dim rLastCell As Range

Set rLastCell = ws.Cells.Find(What:="*", After:=ws.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False)

MsgBox ("The last used column is: " & rLastCell.Column)

特定の行で使用されている最後の列を検索する場合は、次を使用できます。

Dim lColumn As Long

lColumn = ws.Cells(1, Columns.Count).End(xlToLeft).Column

使用範囲の使用(信頼性が低い):

Dim lColumn As Long

lColumn = ws.UsedRange.Columns.Count

列Aにデータがない場合、使用範囲の使用は機能しません。使用範囲に関する別の問題については、次を参照してください。

使用範囲のリセットについては、こちらをご覧ください。

于 2012-08-13T02:00:54.597 に答える
18

私はこれが古いことを知っていますが、私はこれを多くの方法でテストしました。

行番号

Row = ws.Cells.Find(What:="*", After:=[A1] , SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

コラムレター

ColumnLetter = Split(ws.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Cells.Address(1, 0), "$")(0)

列番号

ColumnNumber = ws.Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
于 2016-04-19T11:52:00.023 に答える
2

上記の@ReadifyのUsedRange回答のコードを変更して、開始列が空白であるかどうかにかかわらず、最後に使用された列を取得できると思います。

したがって、これは次lColumn = ws.UsedRange.Columns.Countのように変更されました

これlColumn = ws.UsedRange.Column + ws.UsedRange.Columns.Count - 1により、常に信頼できる結果が得られます

ここに画像の説明を入力

?Sheet1.UsedRange.Column + Sheet1.UsedRange.Columns.Count - 1

上記の行9は、即時ウィンドウに表示されます。

于 2016-03-11T16:36:35.857 に答える
0

ここに何か役に立ちそうなものがあります。データを含む行に基づいて列全体を選択します。この場合、5 行目を使用しています。

Dim lColumn As Long

lColumn = ActiveSheet.Cells(5, Columns.Count).End(xlToLeft).Column
MsgBox ("The last used column is: " & lColumn)
于 2018-06-27T09:09:47.500 に答える