• ベストアンサー

VBAマクロ 一定の条件で、「済」と記入する方法

VBAマクロを初めて書いています。 B列に「チェック」と書かれている場合に、C列へ「済」と記入するマクロを作りたいのです。 ----------------------------------------------- 会社名(A列) | チェック(B列) | 済(C列) ----------------------------------------------- ○○商事 □□不動産 | チェック △△株式会社 ××商店 | チェック  ・・・・・ ・・・・・ ↓(マクロ実行) ----------------------------------------------- 会社名(A列) | チェック(B列) | 済(C列) ----------------------------------------------- ○○商事 □□不動産 | チェック | 済 △△株式会社 ××商店 | チェック | 済 ・・・・・ ・・・・・ ちなみに、行数(データ数)は、都度違いますので、まずは、データ数を確認する必要があると思います。 おそらく、セルC1にて、 条件式を作り、 =IF(B1="チェック","済","") これを、データ行数だけ実行するのかな、と想像しています。 具体的なプログラム等を教えて頂けることができれば、助かります。 どうぞ、宜しくお願い致します。 環境:EXCEL2003

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

  • ベストアンサー
回答No.1

こうなると思います。 Sub Check() Dim Y As Long Dim YFrom As Long Dim YTo As Long '開始行は使用領域の最左上セル(領域の左から1番目、上から一番目)の行 YFrom = UsedRange.Cells(1, 1).Row '終了行は、開始行 + 使用領域行数 -1 YTo = YFrom + UsedRange.Rows.Count - 1 For Y = YFrom To YTo If ActiveSheet.Cells(Y, 2) = "チェック" Then ActiveSheet.Cells(Y, 3) = "済み" End If Next End Sub

wdwdwd
質問者

お礼

有難うございます。 早速、試してみます。有り難うございました。

その他の回答 (2)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

Range("B65536").End(xlUp)で最終行を決めています。最初の位置が不明なのでB2にしています。 Sub Sumi()   Dim rg As Range '// セル   For Each rg In Range(Range("B2"), Range("B65536").End(xlUp))     If rg.Text = "チェック" Then       rg.Offset(0, 1) = "済"  '// 右のセル     End If   Next End Sub

wdwdwd
質問者

お礼

有難うございます。 早速、試してみます。有り難うございました。

  • Nayuta_X
  • ベストアンサー率46% (240/511)
回答No.2

ヒントです。 チェック の書き込みが、されるセル(列)を選択して オートフィルタを使用し、チェック なら 隣のせるに済みと入れます。

関連するQ&A