Excel VBAのマクロを使って、範囲内のデータで最後の行を探す(7つの方法)

  • これを共有
Hugh West

Microsoft Excelで作業しているとき、最後の行や列を見つけることは一般的な作業です。 私たちはキーボードを使って最後に使われた行や列を見つけます。 しかし、複雑なデータセットから最後に使われた行を見つける必要がある状況に遭遇することもあるでしょう。 このチュートリアルでは、VBA in Excelを使って、範囲内のデータで最後の行を見つける方法を実践例と適切なイラストで学習します。

練習用ワークブックをダウンロードする

この練習用ワークブックをダウンロードする。

範囲内の最後に使用された行を検索する.xlsm

Excel VBAのマクロを使って、範囲内のデータで最後の行を探す7つの方法

これからのセクションでは、ExcelのVBAを使用して、範囲内のデータがある最後の行を見つけるのに役立つ7つのメソッドを提供する予定です。 Excelの知識を豊かにするために、これらのメソッドをすべて学び、適用することをお勧めします。

📕 続きを読む : Excelで行の値を持つ最後のセルを見つける(6つの方法)

このチュートリアルを実演するために、このデータセットを使用することにします。

ここでは、いくつかの選手の情報からなるデータセットを用意しました。 これを使って、すべてのメソッドを教えていきます。

VBAエディタを開く

その前に、ここではExcelでVBA Editorを開くための簡単な注意事項をお伝えする年齢です。

まず、以下を押します。 Alt+F11 をキーボードで選択します。 Insert> Module. その後、ExcelのVBAエディタを開きます。

1.VBAでRange.Endプロパティを使って範囲内のデータで最終行を検索する

さて、このメソッドは基本的に範囲の終わりを見つけます。 主に、最後に使用されたセル範囲です。 このメソッドを使用して、指定した範囲のデータを持つ最後の行を見つけることができます。 VBAを使用すると、目的の結果を得ることができます。

📌 ステップス

まず ブイビーエー 編集部

次に、次のコードを入力します。

 Sub range_end_method() Dim sht As Worksheet Dim LastRow As Long Set sht = ActiveSheet LastRow = Range("B4").End(xlDown).Row MsgBox "最後に使用した行: " & LastRow End Sub 

ここで、ファイルを保存し、次に Alt+F8 を選択して、[マクロ]ダイアログボックスを開きます。 を選択します。 range_end_method

その後、「実行」をクリックします。

このように、ExcelのVBAを使って、範囲内のデータがある最後の行を見つけることに成功しました。

2.ExcelのVBAのRange.Findプロパティ

さて、VBAではデータセットから特定の値を探すためにRange.Findメソッドを使います。 しかし、このメソッドは、ある範囲内のデータがある最後の行を探すのに便利です。 ExcelのFind & Replaceダイアログボックスのように動作します。 Range. Findメソッドはたくさんの引数がありますが、全部使うことはしません。

Range.Findメソッドを使用する前に、簡単な情報をお伝えします。

Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious)

:= "*" - アスタリスクは、セル内の任意のテキストや数値を発見するワイルドカード文字です。 主に、空白でないセルを探索するのと同じです。

検索順序:=xlByRows - これは、次の行に移る前に行全体を調べることを意味する。 方向は、SearchDirection引数によって左から右または右から左に検索される。 ここでの追加オプションはxlByColumnsで、これは最後の列を検索するときに利用される。

検索方向:=xlPrevious - xlPreviousは右から左、または下から上へ探索することを意味し、xlNextはその反対方向に探索することを意味します。

📌 ステップス

まず、VBA Editorを開きます。

次に、次のコードを入力します。

 Sub range_find_method() Dim sht As Worksheet Dim LastRow As Long Set sht = ActiveSheet LastRow = sht.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row MsgBox "最後に使用した行: " & LastRow End Sub 

ここで、ファイルを保存し、Alt+F8キーを押して、Macroダイアログボックスを開きます。 を選択します。 range_find_method.

その後 実行 .

最終的に、Excelのワークシートにあるデータのある最後の行を探します。

3.VBAでSpecialCells関数を使って最終行を検索する

を押すように動作します。 Ctrl+End キーボードでCtrl+Endを押すと、どこにいても常に最後の行に移動します。 しかし、ExcelのVBAコードを使って、最後に使用したデータのある行を見つけたい場合、このコードは必需品です。

📌 ステップス

まず、VBA Editorを開きます。

次に、次のコードを入力します。

 Sub specialcells_method() Dim sht As Worksheet Dim LastRow As Long Set sht = ActiveSheet LastRow = sht.Cells.SpecialCells(xlCellTypeLastCell).Row MsgBox "最後に使用した行: " & LastRow End Sub 

ここで、ファイルを保存し、Alt+F8キーを押して、Macroダイアログボックスを開きます。 を選択します。 specialcells_method .

その後 実行 .

このように、ExcelのVBAを使って、データのある最後の行を見つけることに成功しています。

4.UsedRange関数を使って、範囲内のデータを持つ最後の行を検索する

VBAのUsedRangeは、特定のワークシートで使用されている範囲(ワークシートで使用または読み込まれているすべてのExcelセル)を表す範囲オブジェクトを返すワークシートの持ち物です。 ワークシートで左上の使用されているセルと最後の右の使用されているセルで覆われているか指定されている領域を意味する特性です。

📌 ステップス

まず、VBA Editorを開きます。

次に、次のコードを入力します。

 Sub usedRange_method() Dim sht As Worksheet Dim LastRow As Long Set sht = ActiveSheet LastRow = sht.UsedRange.Rows(sht.UsedRange.Rows.Count).Row MsgBox "最後に使用した行: " & LastRow End Sub 

ここで、ファイルを保存し、Alt+F8キーを押して、Macroダイアログボックスを開きます。 を選択します。 usedRange_method。

その後 実行 .

最後に、Excelでワークシートの最後に使用された行が正常に表示されます。

5.ExcelのVBAを使った表範囲の使い方

ワークシートに表がある場合、この方法でデータのある最後の行を見つけることができます。

📌 ステップス

まず、VBA Editorを開きます。

次に、次のコードを入力します。

 Sub TableRange_method() Dim sht As Worksheet Dim LastRow As Long Set sht = ActiveSheet LastRow = sht.ListObjects("Table1").Range.Rows.Count + 3 MsgBox "最後に使用した行: " & LastRow End Sub 

備考 ここでは、データセットが3行目以降から始まっているので、最後の行で3を足しています。

ここで、ファイルを保存し、Alt+F8キーを押して、Macroダイアログボックスを開きます。 を選択します。 TableRange_method。

その後 実行 .

このように、VBAのコードで表範囲メソッドを使用して、Excelでデータのある最後の行を見つけることに成功しました。

6.名前付き範囲の利用で、範囲内のデータを持つ最後の行を検索する

この方法はExcelではあまり使われませんが、知識を深めるために覚えておくとよいでしょう。

データセットに名前付き範囲がある場合、このコードを使用することができます。 次のスクリーンショットを見てください。 名前付き範囲がありますね。

📌 ステップス

まず、VBA Editorを開きます。

次に、次のコードを入力します。

 Sub nameRange_method() Dim sht As Worksheet Dim LastRow As Long Set sht = ActiveSheet LastRow = sht.Range("Named_Range").Rows.Count + 1 MsgBox "最後に使用した行: " & LastRow End Sub 

備考 : 範囲が1行目以降から始まっているので、LastRowに1を追加しています。

ここで、ファイルを保存し、次に Alt+F8 を選択して、[マクロ]ダイアログボックスを開きます。 を選択します。 nameRange_methodです。

その後、「実行」をクリックします。

このように、VBAを使用してデータのある最後の行を見つけることに成功しています。

7.エクセルVBAのCurrentRegion関数

VBAのCurrentRegionメソッドを使えば、Excelで最後に使用した行を見つけることもできます。 トリッキーですが、必要であればこれを利用することもできます。

📌 ステップス

まず、VBA Editorを開きます。

次に、次のコードを入力します。

 Sub CurrentRegion_method() Dim sht As Worksheet Dim LastRow As Long Set sht = ActiveSheet LastRow = sht.Range("B4").CurrentRegion.Rows.Count + 3 'お好みに合わせて数字を追加' MsgBox "最後に使用した行: " & LastRow End Sub 

備考 データセットの最初のセルをRangeとし、行数を追加します。 ここでは、データセットが3行目から始まっているので、3を追加しています。

ここで、ファイルを保存し、Alt+F8キーを押して、Macroダイアログボックスを開きます。 を選択します。 CurrentRegion_method

その後、「実行」をクリックします。

このように、VBAのコードを使用して、データのある最後の行を見つけることに成功しました。

💬覚えておくべきこと

Range.Endは、1つの行または列に対してのみ機能します。 データセットに多くの空白セルが含まれている場合、データのある最後の行を見つけることは困難です。

メソッドに値を追加しないと、コードをスムーズに実行できないことがあります。 最後のセルを見つけるために行番号を追加しました。 つまり、データセットがどこから始まったかを覚えておく必要があるのです。

結論

最後に、このチュートリアルで、ExcelのVBAを使用して、範囲内のデータの最後の行を見つけるための有用な知識の一部を提供できたことを願っています。 これらの手順をすべて学び、あなたのデータセットに適用することをお勧めします。 練習用ワークブックをダウンロードして自分でこれらを試してください。 また、コメント欄にフィードバックをお気軽に。 あなたの貴重なフィードバックが、この種のチュートリアルを作るための私たちのモチベーションを維持します。

ホームページのチェックをお忘れなく Exceldemy.com Excelにまつわる様々なトラブルや解決策をご紹介します。

新しい手法を学び続け、成長し続ける

Hugh West は、業界で 10 年以上の経験を持つ、非常に経験豊富な Excel トレーナー兼アナリストです。彼は会計と財務の学士号と経営管理の修士号を取得しています。ヒューは教えることに情熱を持っており、理解しやすい独自の教育アプローチを開発しました。彼の Excel に関する専門知識は、世界中の何千人もの学生や専門家がスキルを向上させ、キャリアで優れた成果を上げるのに役立ってきました。 Hugh はブログを通じて知識を世界に共有し、個人や企業が潜在能力を最大限に発揮できるよう無料の Excel チュートリアルとオンライン トレーニングを提供しています。