セルを下から上に向かって検索する方法【VBA × Step -1】

はじめに

ExcelでVBAを使って作業をしていると、「セルの内容を下から上に向かって検索したい」という場面があります。
たとえば、「A列にたくさんの名前が並んでいて、その中で一番下にある“森”という苗字を探したい」といったケースです。

今回は、For Next文とStep -1を組み合わせて、セルを逆順に検索する方法を学びましたので、その内容をまとめます。


実現したいこと

  • A列の中にある“森”という文字を下から上へ向かって検索
  • 見つかったらそのセルをアクティブにして処理を終了する

使用したVBAコード

以下が、実際に使用したコード例です。

Dim c1 As Long
Dim i As Long

c1 = Range("A2").Column

For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
    If Cells(i, c1).Value = "森" Then
        Cells(i, 1).Activate
        Exit For
    End If
Next i

コードの解説

1〜2行目:変数の宣言

Dim c1 As Long  
Dim i As Long
  • c1 は列番号(今回はA列)を格納する変数です
  • i は行番号のカウントに使う変数です

3行目:A列の列番号を取得

c1 = Range("A2").Column

セルA2の列番号を取得しています。今回はA列なので、c1 = 1になります。

4行目:For文(下から上へ)

For i = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
  • Cells(Rows.Count, 1).End(xlUp).Row
     → A列の最終入力行を取得
  • To 1 Step -1
     → 行番号を1ずつ減らしながら上方向へループします

5〜7行目:検索条件と処理

If Cells(i, c1).Value = "森" Then
    Cells(i, 1).Activate
    Exit For
End If
  • セルの値が「森」の場合、そのセルをアクティブにし、Exit Forでループを終了します

8行目:Nextでループを継続

Next i

条件に一致するまでループが続きます。


応用のヒント

  • "森" の部分を変数にすれば、検索対象を柔軟に変更可能です
  • アクティブにする代わりに、該当セルに色を付けたり、別の列にメモを入れたりすることもできます
  • 別の列(たとえばB列)を対象にする場合は、c1 = Range("B1").Columnのように調整してください

まとめ

Step -1 を使ったFor Next文を活用することで、セルを下から上へ向かって検索する処理が簡単に書けます。
今回はA列を対象に「“森”という文字を下から探す」例をご紹介しましたが、
この方法は他の列や文字にも応用可能です。

VBAの柔軟なループ処理を活かせば、Excelでの自動化がさらに便利になります。
少しでも参考になれば幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。