- ベストアンサー
エクセルのマクロ、VBA
VBAの初心者です。 ご指導お願いいたします。 現在VBAを作成中なのですが、Mの列には様々な名前のデータが入力されており その中から例えば○○と入力されている場合のみ、その同じ行のBの列に△△と 入力したいのですが、うまくできません。 ○○とはM列に複数あり、そしてM列以外にも入力されています。 参照したいのはM列に○○と入力されているものだけです。 どうかご指導お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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個 ずらした場所に△△と書く、で、中身が空白になったら ループを終了する」 って処理です。
その他の回答 (1)
- KEIS050162
- ベストアンサー率47% (890/1879)
こんな感じでできそうですね。 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 ご参考に。
お礼
何時間もかけてわからなかったことがやっと理解できました。 本当にありがとうございます。