• ベストアンサー

エクセルのマクロ、VBA

VBAの初心者です。 ご指導お願いいたします。 現在VBAを作成中なのですが、Mの列には様々な名前のデータが入力されており その中から例えば○○と入力されている場合のみ、その同じ行のBの列に△△と 入力したいのですが、うまくできません。 ○○とはM列に複数あり、そしてM列以外にも入力されています。 参照したいのはM列に○○と入力されているものだけです。 どうかご指導お願いします。

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

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7991/21373)
回答No.1

VBAで作ってるんですよね? でしたら、そういう時こそ DO ループの出番です。 例えば、M列1行目から処理を始めて、セルの中身が 空白になるまでそれをしたい場合。 Sub VBA_TEST() Range("M1").Select Do  IF Selection.Value = "○○" Then Selection.Offset(0,-11).Value = "△△"  Selection.Offset(1).Select Loop Until Selection.Value = "" End Sub これで動くんじゃないですか? とりあえず、私の環境では問題なく動作しましたけど。 要は、 「初めにM1にカーソルを持って行き、一つずつ下にずらし つつ(Offset(1))内部をチェック、○○だったら左に11個 ずらした場所に△△と書く、で、中身が空白になったら ループを終了する」 って処理です。

mituya08
質問者

お礼

何時間もかけてわからなかったことがやっと理解できました。 本当にありがとうございます。

その他の回答 (1)

  • KEIS050162
  • ベストアンサー率47% (890/1879)
回答No.2

こんな感じでできそうですね。 M列(13列)の1行目から20行目まで、M1,M2…とセルの内容を検査し、内容が”○○”の時だけ、B列(2列)の同じ行に”△△”を入れるやり方です。 行数を変えるときは、For 文の i の開始と終了の数字を適当に変更してみてください。 Sub Okwave() Dim i For i = 1 To 20   If Cells(i, 13).Value = "○○" Then     Cells(i, 2).Value = "△△"   End If Next ご参考に。

関連するQ&A

専門家に質問してみよう