• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA 検索したセルに入力)

Excel VBAでセルに数値を入力する方法

このQ&Aのポイント
  • ExcelのVBAを使用して、データの入力されたファイルに行列から検索したセルに数値を入力する方法について説明します。
  • 特定の条件(名前と日付)でセルを検索し、該当するセルにデータを入力する方法を簡単に紹介します。
  • ROWやCOLUMN関数を使用して行番号や列番号を取得し、Cells関数を使用してデータを入力する方法もありますが、簡単にできる方法を紹介します。

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

  • ベストアンサー
  • kon555
  • ベストアンサー率51% (1842/3559)
回答No.1

 縦横をワークシート関数のMATCHで探してcellでデータを入力するのがVBAとしては楽だと思います。FINDはシート自体のオプションなどに左右されたりするので。 https://shimaydo.com/vbamatchsetu001/

shikaburin
質問者

お礼

ワークシート関数というものについても勉強するつもりです。確かに記述していたままでは、ダメでした。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

VBAですが、下記をやって見ると質問のようなことができるようだ A1:A10に a b c d f d c g h d Cのセルを見つけて、入力した値に置き換える。 ーー 標準モジュールに Sub test01() Range("a1:A10").Find("c").Select x = InputBox("データ入力をどうぞ") Selection = x End Sub これは1セルしか見つからない・存在しない例ですが、複数セルに(この例では)「c」がある場合や 、他の「d」などにも目標が変わって続く場合もできそうです。 でも質問者はVBAの経験が判らないから、最終までのコードは略。変化後が決まっているなら、対応関係を保持して、「置換」で1発処理できそう。 小生は、VBAでエクセル関数を使うのは中途半端と思っている。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

日付でFindを使うと見つからないパターンが出てくるので他の方法です。 日付だけの一例ですが、名前の方も同じようにしてください。 Matchの場合 Sub testMatch() Dim mRst As Variant Dim FCol As Boolean mRst = Application.Match(Range("B5").Value * 1, Range("B9:Z9"), 0) '日付の場合は検索値に*1とする 'mRst = Application.Match(CDate("2023/6/3") * 1, Range("B9:Z9"), 0) '直接日付を指定する場合 If IsError(mRst) Then FCol = False Else FCol = True End If If FCol = False Then MsgBox "日付が見つかりません", vbCritical Exit Sub End If Range("B9").Offset(0, mRst - 1).Select End Sub Matchを使わない場合 Sub testEach() Dim mRng As Range Dim mCol As Long, mRow As Long Dim FCol As Boolean For Each mRng In Range("B9:Z9") If mRng.Value = Range("B5").Value Then ' If mRng.Value = CDate("2023/6/10") Then '直接日付を指定する場合 mCol = mRng.Column FCol = True Exit For End If Next If FCol = False Then MsgBox "日付が見つかりません", vbCritical Exit Sub End If Cells(9, mCol).Select End Sub

shikaburin
質問者

お礼

とても丁寧で、キッチリしたコメントをいただきありがとうございます。これもまた、勉強させていただきます。