• ベストアンサー

【Excel VBA】結合セルのデータ削除

Excel2003を使用しています。 1~1300行までのデータの中の、ある一定の範囲と間隔でデータを削除するためのコードを書きたいのですが、セルが結合されているため、うまく処理できません。 一定の範囲と間隔とは、 B7:O26、B33:O52、B59:O78、B85:O104…B1281:O1300 です。 このひとつの範囲が1ページ分のデータで、全50ページあり、範囲内のセルは全て2行1列で結合されています。 上記のような場合は、どのようにコードを書いたらいいでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

どんなVBAを書いたら、どうダメだったか書いていないので自信がありませんが、以下ではどうですか(シート名は変更して下さい) Sub Macro4() Dim idx As Integer For idx = 7 To 1281 Step 26 Sheets("Sheet1").Cells(idx, 2).Resize(20, 14).ClearContents Next idx End Sub

rx-z5815
質問者

お礼

回答ありがとうございます。 >どんなVBAを書いたら、どうダメだったか書いていないので No.3の回答のように書いていたのですが、『結合されたセルの一部を変更することはできません』といった内容のエラーメッセージが出ました。 参考書で見た MergeArea プロパティを試してみましたが、うまくいかなかったので、質問させていただいた次第です。 教えていただいたコードで、無事処理できました。ありがとうございました。

その他の回答 (3)

  • fred2000
  • ベストアンサー率30% (6/20)
回答No.4

ANo.3です。 すいません。お礼の最後に質問がありますが、私自身まだマクロ初心者なので分かりません。 練習のために書いたコードで処理できそうだったので投稿しました。 どなたか分かる方が教えて下さると良いんですが・・・

rx-z5815
質問者

お礼

fred2000 さん、おはようございます。 >すいません。お礼の最後に質問がありますが、私自身まだマクロ初心者なので分かりません。 わざわざお答えいただき、ありがとうございます。 私もマクロ勉強中で、参考書を片手に頑張っていますが、fred2000 さんのように投稿できるレベルになるのは、まだまだ先の話のようです。 ありがとうございました。

  • fred2000
  • ベストアンサー率30% (6/20)
回答No.3

Sub test1() Dim i As Integer For i = 1 To 1275 Step 26 Range(Cells(i + 6, 2), Cells(i + 25, 15)).ClearContents Next End Sub ではどうでしょうか?

rx-z5815
質問者

お礼

回答ありがとうございます。 fred2000 さんが書いてくださったコードと同じような感じで(下記)書いていたのですが、『結合されたセルの一部を変更することはできません』といった内容のエラーメッセージが出て、うまく処理できませんでした。 Cells の行の部分を  i + 6 → j = 26 * (i - 1) + 7  i + 25 → k = 26 * (i - 1) + 26 として、i を 1 To 50 でループさせていました。 回答をいただいてから、もう一度試したところ、今度はエラーが出なかったので、結局、原因がよくわからないままで、スッキリしない部分もあるのですが、とりあえず、無事に処理できました。 あと、コードの書き方ですが、「Step 26(増分値)」としたほうが、行の部分が長くならず、わかりやすいですね。ループの回数は少ないほうがいいのかなと思い、上記のように書いていましたが、どちらのほうがいいというほどのものでもないのでしょうか?

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

使っているセルの全部を範囲指定して、セル結合を解きます。 左上隅のセルに値はセットされます。 そこから質問の一定間隔の行?で削除のプログラムを組めば、どう都合が悪いのでしょうか。 それでもよければ、最下行から、Step -x でFor Nextで EntireRow(i).Delete を繰り回せばよいのではないですか。xは間隔数+1です。

rx-z5815
質問者

お礼

>使っているセルの全部を範囲指定して、セル結合を解きます。 セルの結合を解除して、マクロを実行するとセルの状態を元に戻せませんよね?データを削除した後は、また新たにデータを入力しますので、セルの状態が変わると困ります。 >そこから質問の一定間隔の行?で削除のプログラムを組めば、どう都合が悪いのでしょうか。 都合が悪いということではなく、エラーメッセージが出て、うまく処理できなかったので、質問させていただき、他の方からいただいた回答で、無事処理できました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう