• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのマクロについて)

エクセルのマクロでC列の最後の文字を確認し、G列に特定の文言が入っていない場合にメッセージを表示するマクロ

このQ&Aのポイント
  • エクセルのマクロを使って、C列の最後の文字が『林檎』であるかどうかを確認し、G列に『林檎』の文言が入っていない場合にメッセージを表示するマクロを作成したいです。
  • 具体的には、C列のセルの文字列の最後から2文字が『林檎』であるかどうかを確認し、G列のセルには『林檎』の文言が入っていない場合には、対応する行番号とメッセージを表示するマクロです。
  • 例えば、6行目のC列には『いいいい林檎』という文字列がありますが、G列には『林檎』の文言が入っていないので、6行目という行番号とメッセージを表示します。ただし、8行目はC列の最後の文字が『林檎』ではないので特にメッセージは表示しません。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

> 毎回範囲が変わるのですが・・・。 #1のmerlionXXです。 65536行はエクセル2003までの行数で、2007からは違います。 データ最下行が変動するなら、最初からそう書いてくれればこう書いたのですが。 C列データの最下行を求め、5行目から最下行までを対象にするサンプルです。 Sub test02() Dim i As Long With ActiveSheet For i = 5 To .Cells(Rows.Count, "C").End(xlUp).Row If Right(.Cells(i, "C"), 2) = "林檎" Then If InStr(.Cells(i, "G"), "林檎") = 0 Then MsgBox i & "行目" End If End If Next i End With End Sub

gogo545454
質問者

お礼

わがままな質問に答えてくれて有難うございましたm(__)m 範囲が変わってもそれに応じて対応させることもできるんですね。 マクロのことは全く分らず非常に助かりました。 自分でも少し勉強してみたいと思います。 (できるようになるか解らないけど)

その他の回答 (1)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

ほんとうに65536行までやる必要があるなら Sub test01() With ActiveSheet For i = 5 To 65536 If Right(.Cells(i, "C"), 2) = "林檎" Then If InStr(.Cells(i, "G"), "林檎") = 0 Then MsgBox i & "行目" End If End If Next i End With End Sub 普通はデータのある範囲だけにすると思いますが。

gogo545454
質問者

補足

毎回範囲が変わるのですが・・・。 例えば200行までだったり1500行まであったり・・・。 そのような場合↓ 65536までの範囲ならどんなときも対応できるかなとおもいまして・・・。 有難うございました!

関連するQ&A