<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>End xlUp &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/end-xlup/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Fri, 27 Mar 2026 22:49:16 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>End xlUp &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>VBA最終行の取得はEnd xlUpが基本！3つの方法を比較</title>
		<link>https://mashukabu.com/excel-vba-howto-get-lastrow/</link>
					<comments>https://mashukabu.com/excel-vba-howto-get-lastrow/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Mon, 10 Jan 2022 10:42:05 +0000</pubDate>
				<category><![CDATA[VBA・マクロ]]></category>
		<category><![CDATA[End xlUp]]></category>
		<category><![CDATA[SpecialCells]]></category>
		<category><![CDATA[UsedRange]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[ループ処理]]></category>
		<category><![CDATA[最終行]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=828</guid>

					<description><![CDATA[VBAで最終行を取得する3つの方法（End xlUp・UsedRange・SpecialCells）を解説。空白セルの落とし穴やシート指定のコツ、For文・Do Loopとの組み合わせなど実務での活用例も紹介します。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「データの最終行って、どうやって取得すればいいの？」</p>



<p class="wp-block-paragraph">VBAでマクロを書き始めると、必ずぶつかるのがこの疑問ですよね。行数が毎回変わるデータを処理するには、最終行を自動で取得する方法を知っておく必要があります。</p>



<p class="wp-block-paragraph">でも安心してください。VBAで最終行を取得する方法はいくつかあります。仕組みを理解すれば迷わず使いこなせますよ。この記事では代表的な3つの方法をコード付きで解説します。それぞれの違い・使い分け・よくあるトラブルの対処法もまとめてお伝えしますね。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">VBAで最終行を取得する方法3選</a><ol><li><a href="#toc2" tabindex="0">End(xlUp)で最終行を取得する（最もよく使う方法）</a></li><li><a href="#toc3" tabindex="0">UsedRangeで最終行を取得する</a></li><li><a href="#toc4" tabindex="0">SpecialCellsで最終行を取得する</a></li></ol></li><li><a href="#toc5" tabindex="0">3つの方法の違いと使い分け</a></li><li><a href="#toc6" tabindex="0">シート指定を明示して誤動作を防ぐ</a></li><li><a href="#toc7" tabindex="0">VBA 最終行の取得でよくあるトラブルと対処法</a><ol><li><a href="#toc8" tabindex="0">空白セルがあると正しく取得できない</a></li><li><a href="#toc9" tabindex="0">取得した値が想定と違うときの確認ポイント</a></li></ol></li><li><a href="#toc10" tabindex="0">実務で使える！最終行取得の活用例</a><ol><li><a href="#toc11" tabindex="0">For文と組み合わせて全行を処理する</a></li><li><a href="#toc12" tabindex="0">Do Loopで条件付きの繰り返し処理をする</a></li><li><a href="#toc13" tabindex="0">最終列を取得する方法</a></li></ol></li><li><a href="#toc14" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">VBAで最終行を取得する方法3選</span></h2>



<p class="wp-block-paragraph">最終行を取得する方法は複数ありますが、ここでは実務でよく使われる3つの方法を紹介します。</p>



<h3 class="wp-block-heading"><span id="toc2">End(xlUp)で最終行を取得する（最もよく使う方法）</span></h3>



<p class="wp-block-paragraph">まずはVBAで最終行を取得する定番コードです。</p>



<pre class="wp-block-code"><code>Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row</code></pre>



<p class="wp-block-paragraph">このコードは「A列の最終行」を取得しています。仕組みをかんたんに説明すると、こんな流れです。</p>



<ol class="wp-block-list"><li><code>Rows.Count</code> でシートの最大行数（1,048,576行）を取得する</li><li><code>Cells(1048576, 1)</code> でA列の一番下のセルを指定する</li><li><code>.End(xlUp)</code> で、そこから上方向にデータが入っているセルを探す</li><li><code>.Row</code> で、見つかったセルの行番号を数値で返す</li></ol>



<p class="wp-block-paragraph">これはExcelで <strong>Ctrl + 上矢印キー</strong> を押したときと同じ動きです。シートの一番下から上に向かってデータを探すので、途中に空白セルがあっても正確に最終行を見つけられます。</p>



<p class="wp-block-paragraph">取得した最終行は変数 <code>lastRow</code> に格納しておくと、あとからFor文やDo Loopで繰り返し使えて便利です。変数の基本的な使い方については「<a href="https://mashukabu.com/excel-vba-variable-explanation/">VBAの変数の使い方とルールについて解説</a>」で詳しく紹介しています。</p>



<p class="wp-block-paragraph"><strong>列を変更したいとき</strong> は、<code>Cells(Rows.Count, 1)</code> の数値部分を変えてください。</p>



<pre class="wp-block-code"><code>'--- B列の最終行を取得 ---
lastRow = Cells(Rows.Count, 2).End(xlUp).Row

'--- C列の最終行を取得 ---
lastRow = Cells(Rows.Count, 3).End(xlUp).Row</code></pre>



<p class="wp-block-paragraph">A列=1、B列=2、C列=3&#8230;&#8230;と、列番号を数値で指定します。セルの指定方法について詳しく知りたい方は「<a href="https://mashukabu.com/excel-vba-range-cells/">RangeとCellsはどう違う？使い分けを実例で解説</a>」を参考にしてみてください。</p>



<p class="wp-block-paragraph">なお、<code>Cells</code> ではなく <code>Range</code> を使った書き方もあります。Range オブジェクトの基本操作は「<a href="https://mashukabu.com/excel-vba-howto-use-range/">VBAでのRangeの使い方を基礎から解説</a>」で紹介しています。あわせてチェックしてみてください。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p><code>Rows.Count</code> はワークシートの最大行数を自動で返してくれます。Excel 2007以降のファイル形式（.xlsx / .xlsm）では1,048,576行、Excel 2003以前の形式（.xls）では65,536行です。<code>Rows.Count</code> を使えばファイル形式に関係なく正しい最大行数が取得できるので、数値を直接書く必要はありません。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc3">UsedRangeで最終行を取得する</span></h3>



<p class="wp-block-paragraph">2つ目の方法は <code>UsedRange</code> プロパティを使う方法です。</p>



<pre class="wp-block-code"><code>Dim lastRow As Long
lastRow = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row - 1</code></pre>



<p class="wp-block-paragraph"><code>UsedRange</code> はワークシートで「使用されている範囲」を返すプロパティです。データが入力されている範囲全体を自動で判定してくれます。</p>



<p class="wp-block-paragraph">ここで気になるのが <code>+ ActiveSheet.UsedRange.Row - 1</code> の部分ですよね。これは <strong>1行目が空白のケースに対応するため</strong> の計算です。</p>



<p class="wp-block-paragraph">たとえば、A1〜A3が空白で、A4からデータが始まっているケースを考えてみましょう。</p>



<ul class="wp-block-list"><li><code>UsedRange.Rows.Count</code> → 使用範囲の行数を返す（例: 7行）</li><li><code>UsedRange.Row</code> → 使用範囲の開始行番号を返す（例: 4行目）</li></ul>



<p class="wp-block-paragraph">もし <code>Rows.Count</code> だけで取得すると、結果は「7」になります。でも実際のデータ最終行はA10（4 + 7 &#8211; 1 = 10行目）ですよね。だから開始行を足して1を引く補正が必要なんです。</p>



<pre class="wp-block-code"><code>'--- 1行目からデータが始まっている場合はシンプルでもOK ---
lastRow = ActiveSheet.UsedRange.Rows.Count</code></pre>



<p class="wp-block-paragraph">1行目からデータが始まっていることが確実であれば、上のシンプルな書き方でも問題ありません。ただし、他の人が使うマクロでは、念のため完全版の計算式を使っておくと安心です。</p>



<p class="wp-block-paragraph">注意点として、<code>UsedRange</code> は <strong>書式が設定されているだけのセル</strong> も「使用済み」とみなします。背景色や罫線だけ入っているセルも対象です。そのため、データの最終行よりも大きな値が返ることがあります。</p>



<h3 class="wp-block-heading"><span id="toc4">SpecialCellsで最終行を取得する</span></h3>



<p class="wp-block-paragraph">3つ目は <code>SpecialCells</code> メソッドを使う方法です。</p>



<pre class="wp-block-code"><code>Dim lastRow As Long
lastRow = Cells.SpecialCells(xlCellTypeLastCell).Row</code></pre>



<p class="wp-block-paragraph"><code>SpecialCells(xlCellTypeLastCell)</code> は、ワークシートで最後に使用されたセルを返します。これはExcelで <strong>Ctrl + End</strong> を押したときと同じ動作です。</p>



<p class="wp-block-paragraph">この方法も <code>UsedRange</code> と同様に、書式のみのセルも考慮されるため、実際のデータの最終行よりも大きな値が返る場合があります。</p>



<pre class="wp-block-code"><code>'--- 最終行と最終列を同時に取得 ---
Dim lastRow As Long
Dim lastCol As Long
lastRow = Cells.SpecialCells(xlCellTypeLastCell).Row
lastCol = Cells.SpecialCells(xlCellTypeLastCell).Column</code></pre>



<p class="wp-block-paragraph">最終行と最終列を同時に取得できるのが、この方法の便利なポイントです。</p>



<p class="wp-block-paragraph">ただし1つ注意点があります。<strong>データが1つもないシート</strong> で <code>SpecialCells</code> を実行すると、実行時エラー（Runtime Error 1004）が発生します。空シートでも安全に動くようにするには、エラーハンドリングを入れておきましょう。</p>



<pre class="wp-block-code"><code>Dim lastRow As Long
On Error Resume Next
lastRow = Cells.SpecialCells(xlCellTypeLastCell).Row
On Error GoTo 0

If lastRow = 0 Then
    lastRow = 1 'データなしの場合は1行目を返す
End If</code></pre>



<p class="wp-block-paragraph"><code>On Error Resume Next</code> でエラーを一時的にスキップし、直後の <code>On Error GoTo 0</code> で通常のエラー処理に戻しています。</p>



<h2 class="wp-block-heading"><span id="toc5">3つの方法の違いと使い分け</span></h2>



<p class="wp-block-paragraph">ここまで紹介した3つの方法を比較表で整理してみましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>項目</th><th>End(xlUp)</th><th>UsedRange</th><th>SpecialCells</th></tr></thead><tbody><tr><td>取得対象</td><td>指定した列のデータ最終行</td><td>シート全体の使用範囲</td><td>シート全体の使用範囲</td></tr><tr><td>空白セルの影響</td><td>受けにくい</td><td>受けにくい</td><td>受けにくい</td></tr><tr><td>書式のみのセル</td><td>無視する</td><td>含む</td><td>含む</td></tr><tr><td>特定の列を指定</td><td>できる</td><td>できない</td><td>できない</td></tr><tr><td>空シートでの動作</td><td>1を返す</td><td>エラーなし</td><td>エラーが発生する</td></tr><tr><td>Excel操作での同等機能</td><td>Ctrl + 上矢印</td><td>なし</td><td>Ctrl + End</td></tr><tr><td>おすすめ度</td><td>最もおすすめ</td><td>状況による</td><td>状況による</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>結論：迷ったら End(xlUp) を使いましょう。</strong> 特定の列に対して正確な最終行を取得でき、書式だけのセルに惑わされないため、実務で最も信頼性が高い方法です。</p>



<p class="wp-block-paragraph">UsedRange や SpecialCells は「シート全体でどこまでデータがあるか」をざっくり把握したい場面で役立ちます。たとえば、データの範囲を一括でコピーしたいときなどに使うと便利ですよ。</p>



<h2 class="wp-block-heading"><span id="toc6">シート指定を明示して誤動作を防ぐ</span></h2>



<p class="wp-block-paragraph">ここまでのコード例では、対象シートを明示せずに <code>Cells(Rows.Count, 1)</code> と書いていました。この書き方は暗黙的に <code>ActiveSheet</code>（現在アクティブなシート）を参照します。</p>



<p class="wp-block-paragraph">シートが1つだけのマクロなら問題ありません。ただし <strong>複数シートを扱うマクロ</strong> では、意図しないシートの最終行を取得してしまうことがあります。</p>



<p class="wp-block-paragraph">安全なのは、<code>With</code> ステートメントで対象シートを明示する書き方です。</p>



<pre class="wp-block-code"><code>Sub シート指定で最終行を取得()
    Dim lastRow As Long

    With ThisWorkbook.Worksheets(&quot;データ一覧&quot;)
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    End With

    MsgBox &quot;最終行: &quot; &amp; lastRow
End Sub</code></pre>



<p class="wp-block-paragraph">ポイントは <code>.Cells</code> や <code>.Rows.Count</code> の先頭にドット（<code>.</code>）をつけること。このドットが <code>With</code> で指定したシートを参照していることを示します。ドットを忘れると <code>ActiveSheet</code> が参照されてしまうので注意してください。</p>



<pre class="wp-block-code"><code>'--- よくある間違い ---
With ThisWorkbook.Worksheets(&quot;データ一覧&quot;)
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row  'ドットなし → ActiveSheetを参照してしまう
End With

'--- 正しい書き方 ---
With ThisWorkbook.Worksheets(&quot;データ一覧&quot;)
    lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row  'ドットあり → 指定シートを参照
End With</code></pre>



<p class="wp-block-paragraph">シンプルなマクロでは省略しても構いません。ただ、シートを明示しておくと「どのシートを処理しているか」が一目瞭然になります。あとから見返したときにも読みやすいので、習慣にしておくのがおすすめです。</p>



<h2 class="wp-block-heading"><span id="toc7">VBA 最終行の取得でよくあるトラブルと対処法</span></h2>



<p class="wp-block-paragraph">最終行の取得はシンプルに見えますが、いくつかハマりやすいポイントがあります。事前に知っておけば慌てずに済むので、チェックしておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc8">空白セルがあると正しく取得できない</span></h3>



<p class="wp-block-paragraph">End(xlUp) ではなく <code>End(xlDown)</code> を使うと、空白セルがある場合に正しく最終行を取得できません。</p>



<pre class="wp-block-code"><code>'--- End(xlDown) を使った場合（非推奨） ---
lastRow = Cells(1, 1).End(xlDown).Row</code></pre>



<p class="wp-block-paragraph">このコードはA1セルから下方向にデータを探します。一見すると自然な発想ですが、ここに落とし穴があります。</p>



<p class="wp-block-paragraph">途中に空白セルがあると、そこで止まってしまうんです。たとえば A1〜A5 にデータがあり、A6 が空白、A7〜A10 にもデータがあるケースで考えてみましょう。<code>End(xlDown)</code> は <strong>A5</strong> で止まり、本当の最終行 A10 を取得できません。</p>



<p class="wp-block-paragraph">さらに厄介なのが、<strong>データが1行しかない場合</strong> です。A1にしかデータがないと、A2以降がすべて空白なので、シート最終行の1048576行目まで突き抜けてしまいます。</p>



<pre class="wp-block-code"><code>'--- 安全な方法（End(xlUp)を使う） ---
lastRow = Cells(Rows.Count, 1).End(xlUp).Row</code></pre>



<p class="wp-block-paragraph">下から上に探す <code>End(xlUp)</code> なら、途中の空白セルに影響されません。基本的には <strong>End(xlUp) を使うクセ</strong> をつけておくのがおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc9">取得した値が想定と違うときの確認ポイント</span></h3>



<p class="wp-block-paragraph">「コードは正しいはずなのに、取得した最終行が想定と違う&#8230;&#8230;」というときは、次の3点を確認してみてください。</p>



<ol class="wp-block-list"><li><strong>対象の列は正しいか</strong> &#8212; <code>Cells(Rows.Count, 1)</code> の列番号（2つ目の引数）が意図した列になっているか確認しましょう。A列のつもりでB列を指定していた、というミスは意外とよくあります。</li></ol>



<ol class="wp-block-list"><li><strong>データが入っていない列を指定していないか</strong> &#8212; 指定した列にデータが1つも入っていない場合、End(xlUp) は1行目を返します。変数に格納した値が「1」になっていたら、この可能性を疑ってみてください。</li></ol>



<ol class="wp-block-list"><li><strong>書式だけのセルが残っていないか</strong> &#8212; UsedRange や SpecialCells を使っている場合は要注意です。過去にデータを削除したセルに書式が残っていると、実際のデータより大きな値が返ります。セルを選択して「クリア」（Delete キーではなく「すべてクリア」）を実行すると解消できます。</li></ol>



<h2 class="wp-block-heading"><span id="toc10">実務で使える！最終行取得の活用例</span></h2>



<p class="wp-block-paragraph">最終行を取得する方法がわかったら、実際のマクロで使ってみましょう。ここでは実務でよく使うパターンを3つ紹介します。</p>



<h3 class="wp-block-heading"><span id="toc11">For文と組み合わせて全行を処理する</span></h3>



<p class="wp-block-paragraph">最終行取得の最大の活用場面は、<strong>For文と組み合わせたループ処理</strong> です。</p>



<pre class="wp-block-code"><code>Sub 全行処理()
    Dim lastRow As Long
    Dim i As Long

    '--- A列の最終行を取得 ---
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row

    '--- 2行目から最終行までループ処理 ---
    For i = 2 To lastRow
        '--- B列に「処理済み」と入力する例 ---
        Cells(i, 2).Value = &quot;処理済み&quot;
    Next i

    MsgBox lastRow - 1 &amp; &quot;件のデータを処理しました&quot;
End Sub</code></pre>



<p class="wp-block-paragraph"><code>For i = 2 To lastRow</code> とすることで、データが何行あっても自動で全行を処理してくれます。2行目から開始しているのは、1行目がヘッダー行（見出し行）であることを想定しているためです。</p>



<p class="wp-block-paragraph">For文の使い方について詳しくは「<a href="https://mashukabu.com/excel-vba-howto-use-for/">For~Next文の使い方と実務で役立つ応用テクニック</a>」で解説しています。ループ処理をもっと深く知りたい方はぜひ読んでみてくださいね。</p>



<h3 class="wp-block-heading"><span id="toc12">Do Loopで条件付きの繰り返し処理をする</span></h3>



<p class="wp-block-paragraph">「すべての行」ではなく <strong>特定の条件を満たすまで</strong> ループしたいときは、Do Loop が便利です。たとえば、A列を上から順に見ていき、「完了」と書かれたセルが見つかったらループを抜ける処理はこう書けます。</p>



<pre class="wp-block-code"><code>Sub 条件付きループ()
    Dim lastRow As Long
    Dim i As Long

    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    i = 2 'ヘッダーの次の行から開始

    Do While i &lt;= lastRow
        If Cells(i, 2).Value = &quot;完了&quot; Then
            MsgBox i &amp; &quot;行目で「完了」が見つかりました&quot;
            Exit Do
        End If
        i = i + 1
    Loop
End Sub</code></pre>



<p class="wp-block-paragraph">For文は「全行を処理する」のが得意ですが、Do Loop は「条件に応じてループを制御する」のが得意です。最終行取得と組み合わせることで、「最終行を超えないように安全にループする」ことができます。</p>



<p class="wp-block-paragraph">If文での条件分岐については「<a href="https://mashukabu.com/excel-vba-conditional-branch-explanation/">VBAのIf文の使い方を基礎から解説</a>」を参考にしてみてください。Do Loopの詳しい書き方は「<a href="https://mashukabu.com/how-to-use-do-loop/">Do Loopの使い方を基礎から解説</a>」で紹介しています。</p>



<h3 class="wp-block-heading"><span id="toc13">最終列を取得する方法</span></h3>



<p class="wp-block-paragraph">行だけでなく、<strong>最終列</strong> を取得したい場面もありますよね。考え方は最終行の取得とまったく同じです。</p>



<pre class="wp-block-code"><code>Dim lastCol As Long
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column</code></pre>



<p class="wp-block-paragraph">違いは以下の3点です。</p>



<ul class="wp-block-list"><li><code>Rows.Count</code> → <code>Columns.Count</code>（最大列数を取得）</li><li><code>End(xlUp)</code> → <code>End(xlToLeft)</code>（左方向に探す）</li><li><code>.Row</code> → <code>.Column</code>（列番号を返す）</li></ul>



<p class="wp-block-paragraph">最終行と最終列を両方取得すれば、データ範囲全体を動的に指定できます。</p>



<pre class="wp-block-code"><code>Sub データ範囲を取得()
    Dim lastRow As Long
    Dim lastCol As Long

    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    lastCol = Cells(1, Columns.Count).End(xlToLeft).Column

    '--- データ範囲を選択する例 ---
    Range(Cells(1, 1), Cells(lastRow, lastCol)).Select

    MsgBox &quot;データ範囲: A1:&quot; &amp; Cells(lastRow, lastCol).Address
End Sub</code></pre>



<p class="wp-block-paragraph">End プロパティで指定できる方向を一覧にしておきます。</p>



<figure class="wp-block-table"><table><thead><tr><th>定数</th><th>方向</th><th>用途</th></tr></thead><tbody><tr><td>xlUp</td><td>上方向</td><td>最終行の取得</td></tr><tr><td>xlDown</td><td>下方向</td><td>先頭行からの探索（非推奨）</td></tr><tr><td>xlToLeft</td><td>左方向</td><td>最終列の取得</td></tr><tr><td>xlToRight</td><td>右方向</td><td>先頭列からの探索</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"><span id="toc14">まとめ</span></h2>



<p class="wp-block-paragraph">VBAで最終行を取得する3つの方法を紹介しました。</p>



<ul class="wp-block-list"><li><strong>End(xlUp)</strong> &#8212; 最もおすすめ。特定の列の正確な最終行を取得できる</li><li><strong>UsedRange</strong> &#8212; シート全体の使用範囲を取得。書式のみのセルも含む点に注意</li><li><strong>SpecialCells</strong> &#8212; Ctrl+Endと同じ動作。最終行と最終列を同時に取得したいときに便利</li></ul>



<p class="wp-block-paragraph">迷ったら <code>Cells(Rows.Count, 1).End(xlUp).Row</code> を使えば間違いありません。</p>



<p class="wp-block-paragraph">最終行の取得は、VBAでマクロを作るうえで避けて通れない基本テクニックです。最初のうちはコードを見ながら書いても問題ありません。何度も使ううちに自然と覚えられるので、焦らず実務のなかで身につけていきましょう。</p>



<p class="wp-block-paragraph">For文やDo Loopと組み合わせれば、データの自動処理がぐっとラクになりますよ。まずは今回紹介したコードをコピーして、ご自身のマクロで試してみてください。</p>



<p class="wp-block-paragraph">VBAの学習を体系的に進めたい方は「<a href="https://mashukabu.com/excel-vba-learning-roadmap/">VBAの学習順番を初心者向けに解説</a>」も参考にしてみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/excel-vba-howto-get-lastrow/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
