タイムマシーンがあったら、過去と未来どちらに行く?

助けてください。
Excelは関数を少し使ってるくらいのVB全くわかってないレベルで恐縮なのですが
仕事で以下のファイルを作る必要があり
検索などで色々調べているものの見事につまづいております。

作りたいファイルは、添付画像のように

列Fの結合セルにはテキストで "あいうえお" が
それぞれ入っているのですが

メモ下の結合セル内が

〇の時は列F4の結合セル、あいうえお(赤字)を削除して空白に。
×の時は列F11の結合セル、あいうえお(青字)はそのまま残す。

のようなマクロを組みたいです。
if分を使えば、、というイメージはありますが、型の指定など
諸々ちんぷんかんぷんでどのようにすればよいか苦慮しております。

可能であればコードをそのまま貼り付けられる状態で
教えていただけると嬉しいです。

よろしくお願いいたします。

「[Excel VBA]特定の条件で文字を」の質問画像

質問者からの補足コメント

  • 単一セルだとみなさんから教えていただいた方法でできたのですが
    結合セルにしたとたんエラーになってしまいます。

      補足日時:2024/09/30 14:28

A 回答 (4件)

No1です。



>コンパイルエラー(Nextに対応するForがありません。)と表示されています。
>原因として何が考えられるかご教示いただけますでしょうか。
当方の環境では問題なく実行できます。
どのような方法で試しているのか不明ですけれど、タイポではありませんか?
この掲示板のコードをまるっとコピペしてもエラーが発生するのでしょうか?

仮にエラーになるにしても
 >(Nextに対応するForがありません。)
が出るとは思えません。



>結合セルにしたとたんエラーになってしまいます
失礼しました。結合セルではClearContentsが使えないようですね。
以下に替えてみてください。

Sub Sample2()
For r = 6 To Cells(Rows.Count, 15).End(xlUp).Row Step 7
 If Cells(r, 15).Value = "○" Then Cells(r - 2, 6).Value = Empty
Next r
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます!
お返事遅くなってしまって申し訳ありません。
おかげさまで希望する挙動が実現できました。
これを機にちゃんと勉強していきたいと思いました。
本当にありがとうございました!

お礼日時:2024/10/03 09:23

ゴメン、変数名間違えた


(列END→行ENDに変える)

For 行 = 2 To 列END Step 7 '7行置きにループ

For 行 = 2 To 行END Step 7 '7行置きにループ

これでチャント動きますよ。
    • good
    • 0
この回答へのお礼

ありがとうございます!
お返事遅くなってしまって申し訳ありません。
色々な構文?があるのですね!
ssawatake様からいただいたコードでも希望する挙動ができました。

お礼日時:2024/10/03 09:25

sheet名がsheet1で有る場合を前提で。


Dim WS1 As Worksheet
Set WS1 = Worksheets("Sheet1")
行END = Range("O65536").End(xlUp).Row 'O列最終行をセット

For 行 = 2 To 列END Step 7 '7行置きにループ

If WS1.Range("O" & 行+4).Value = "○" Then
WS1.Range("F" & 行+2).Value = ""
END If

Next 行
    • good
    • 0
この回答へのお礼

ありがとう

お礼日時:2024/10/03 09:25

こんにちは



説明の曖昧なところは勝手に解釈しました。

・対象セルが「○」「×」以外の場合はどうするのか不明なので、
 『「〇」がある場合だけ空白にする』としています。
・表形式が不明ですが、7行ごとのセットが繰り返されていると解釈し、
 O6セルから始めて、7行おきに値があるセルまで処理を繰り返します。

以下ご参考までに。
Sub Sample()
For r = 6 To Cells(Rows.Count, 15).End(xlUp).Row Step 7
 If Cells(r, 15).Value = "○" Then Cells(r - 2, 6).ClearContents
Next r
End Sub

※ コード中の「○」の文字は異字体がいろいろありますので、実際にご使用になっている文字と合わせてください。
(文字が異なると、正しく判断できません)
    • good
    • 0
この回答へのお礼

早速ありがとうございます。
つたない説明で解析いただき感謝でございます。
ご推察通り「〇がある場合だけ空白にする」で全く問題ありません。

このコードを実行すると コンパイルエラー(Nextに対応するForがありません。)と表示されています。
End Ifを Next r の前につけてみましたが解消されず、、、
原因として何が考えられるかご教示いただけますでしょうか。

お礼日時:2024/09/30 13:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A