• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBAによる検索処理?)

Excel VBAによる検索処理の実装方法とは?

このQ&Aのポイント
  • ExcelのVBAを使用して、指定の条件での検索処理を行う方法を教えてください。
  • 具体的には、指定のセルの値に一致する行を検索し、その行の別のセルの値を取得する方法を知りたいです。
  • サンプルコードや考え方を教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

#01です。C2の式は以下でいかがでしょうか。  =IF(A2="","",INDIRECT("B"&MIN(IF(LEN(A2:A$10)=0,ROW(A2:A$10),65536))-1)) (Shift+Ctrl+Enterで入力します) ただし最終行にデータがあると不正動作するようですので、範囲(A2:A$10)は例えばA2:A$500のように実際のデータより大きめに指定しておいてください。

tomytomy
質問者

お礼

重ね重ねのご回答ありがとうございます。 今度は問題なく処理されました。ISBLANK関数で空白をチェックするのではなく、LEN関数で文字数が0であることを条件分岐にしたんですね。 大変参考になりました。もっと勉強せねばと思いました。

その他の回答 (2)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

#01です。VBAならとりあえずこんな感じでしょうか Sub Macro() Dim wkNUM, idx As Long, psw As Boolean  psw = False  For idx = Range("A65536").End(xlUp).Row To 2 Step -1   If Cells(idx, 1) = "" Then    psw = False    Cells(idx, 3) = ""   Else    If psw = False Then     wkNUM = Cells(idx, 2).Value     psw = True    End If    Cells(idx, 3) = wkNUM   End If  Next End Sub

tomytomy
質問者

お礼

VBAでのご回答もわざわざ考えてくださりありがとうございます。 内容を理解してみようと思います。最初VBAと書いたのは、ループ処理が入るのではないかと思ったからでした。今後複雑な処理をする必要が出てきそうですのでVBAもきちんと勉強しようと思います。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

もちろんVBAでもできます。でも関数でもできます。C2に以下の式をペーストして =IF(A2="","",INDIRECT("B"&MIN(IF(ISBLANK(A2:A$9),ROW(A2:A$9),65536))-1)) Shift+Ctrl+Enterで入力し、C3以下はC2をコピー。式中のA2:A$9の範囲は実データに合わせる。($記号はいじらないこと!) VBAでやりたいが、アルゴリズムが分からないというご趣旨であれば補足して下さい。

tomytomy
質問者

補足

迅速なご回答ありがとうございます。 関数の式については理解してみようと思います。 頂いた内容で試してみたところ、A列に直接入力している場合はうまくいきました。 一方A列自身に式を設定しているような場合には見かけ上空白でも、その式の最後までは空白で無いと認識しているようです。 (例:IF(D2="B",D2,"")をA列のセルに設定している場合) お願いばかりで恐縮ですが、A列自身に式を設定されている場合でも有効な関数の式を教えて頂けないでしょうか?よろしくお願いいたします。

関連するQ&A