• ベストアンサー

【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/17068)
回答No.2

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

rx-z5815
質問者

お礼

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

関連するQ&A

  • 【Excel】結合セルを含む範囲のコピー

    Excel2003を使用しています。 1ページ目…B6:O26、2ページ目…B27:O52、3ページ目…B53:O78以下1500行ほど同じように続いていて、結合セルが含まれています。 2ページ目以降のデータを1ページ分下へずらして、3ページ目以降にコピーしたい場合、データはコピーできるものの、結合セルが解除された状態でコピーされてしまいます。 どのページも同じように結合されているので、コピー → すべて貼り付けで、結合セルもそのままの状態でコピーされると思ったのですが。。。 結合セルの状態もコピーできる方法があれば、教えていただきたいです。よろしくお願いします。

  • Excel2007の一括セル結合で、

    Excel2007の一括セル結合で、指定した範囲内の行を 一括でそれぞれの行だけをセル結合する方法を教えてください。 添付図の例では、A1~F3を範囲指定して 一括でセル結合して、18セルを3セルにする方法です。

  • EXCEL:セル結合した場合のプルダウンの結果について

    EXCEL:セル結合した場合のプルダウンの結果について エクセルで1行目2行目セル結合した際に、 プルダウンで選択すると1行目のデータしか表示されません。 1行目2行目セットで表示されるにはどうしたらよいでしょうか? 例)     A B 1行目  ○ XXXX 2行目 YYYY (1)A1,A2をセル結合し、○をプルダウンの候補とする。 (2)プルダウンで○を選択すると、B列はXXXXしか表示されない。 A1A2はセル結合しているので、イメージとしてはB列が XXXX YYYY 出てくれると良いのですが。。 ご存知の方いらっしゃいましたら、ご教授よろしくお願い致します。

  • 結合されたセルの一覧出力 VBA

    お世話になります。 結合されたファイルの一覧を出力したいと思っています。 (できれば、変数に出力したいです) 表があり、ばらばらな範囲で結合されています。 結合した部分には、日付が入っています。 日付が入っている列は、B列とH列で、 その中で「AA」「BB」と入力されている結合セル以外の 結合セル範囲?行?を取得したいと思っております。 B列とH列の結合セル行が同じではありません。 B列は、B5:B13、B18:B25、B30:37 (それ以外のセルは結合してあっても、「AA,BB]と書いてある H列は、H6:H13,H18:H25、H30::H35,H36:H40(上と同じ) ということになっております。 できれば、 1.セル結合範囲を検索(行数取得?) 2.セルの内容が日付かどうか確認 3.日付なら、セル行数を取得 ということがしたいです。 日付の形式は、3/1などのように入っています。 このフォームが結構変わるため、 結合しているセルの中身が日付かどうかを確認し、 日付なら行数取得→色んなプログラムでその行数を使用 したいと思っています。 分かりにくい部分が多いかと思いますが、 回答お願い致します。

  • 【Excel VBA】条件つき行削除

    Excel2003を使用しています。 システムからCSVで落としたデータで、データの並び方に規則性があるので、それを利用して、不要部分のデータをマクロで削除できないかと思い、質問させていただきます。 A列に『累計』を含む文字があった場合、その行のD列が0だったら、その行より上の行のA列に『計上日』と入力されている行までを削除するということをしたいです。 下記でいうと、2~5行までを削除したいです。    A     B     C     D 1 2 計上日 3 4 5 累計                0 6 7 計上日 8 9 累計              1000 上記では、B列、C列には何も書いていませんが、実際はデータが入力されていたり、空欄だったりです。 D列が0の行を削除するコードはわかるのですが、さらに、条件が加わっても同じように処理は可能でしょうか? よろしくお願いします。

  • マクロにて空白のセルを一括して消去でなく削除したい

    空白のセルを一括して、空白セルについた色も含めてマクロで全て削除したい。 現在のデータ(仕様)について 1.Sheet2に列ごとにセルに色をつけ、データもあるとします。 2.A列10行・B列6行・C;列18行というように、列によってデータの入った範囲が違います。 3.どの行も途中に空白セルはなく、詰めたデータです。 以上です マクロで一括処理したいと思いますが、このようなことができるコードを教えて頂けませんか。よろしくお願いします。

  • Excel2007のVBAで文字列を結合

    Excel2007のマクロで文字列を結合したいのですがうまくいきません。 下記がお題になります 1、セルA1からU1までデータが1つずつ入ってます。 2、1のデータを3列ずつ結合してA3からG3にコピー。 例えば、セルA1あ、B1い、C1う、D1え、E1お、F1か、ならセルA3あいう、セルB3えおか、のようにマクロで一機にできるソースをお願いします。

  • エクセルで結合したセルをグラフにしたい

    エクセルでグラフ(レーダーチャート)を作成するにあたって、複数のセルを結合した箇所を1データ(セル)として認識させたいのですが、結合前の空白のセルもカウントしてしまいます。 現在、具体的な「グラフ データの範囲として」 ='〇〇シート'!$M$19:$M$25,'〇〇シート'!$O$19:$P$25 となっておりますが、 どの列でも23、24行目を結合しているので、見た目は結合されているので あるはずのない24行目が認識されていて、レーダーチャート上で空白になってしまいます。 どうにかして24行目を外して計算したいのですがどのようにグラフのデータ範囲を選択すればいいのでしょうか?

  • 繰り返し処理でセルの結合表示

    繰り返し処理でセルの結合表示 VBAの初心者です。 例えば、参照シートにA列、B列それぞれ苗字と名前が入力されてあり 数百人分の氏名が1行ずつ入力されてあるとします。 その情報を異なるシートに苗字と名前をA列に結合させ、10行間隔で 表示させる繰り返し処理を行いたいのですが、何方か教えていただけると 助かります。 よろしくお願いします。

  • Excel VBAで結合セルに連番を振っていくには?

    Microsoft Excel 2003での質問です。 表を作成しました。 結合セルが複数ある1列に(セル数はまちまち・複数の列には非結合)、連番を振っていく作業をしています。 これをVBAを使って自動化したいのです。 列に連番がすでに入力されている最終行の下のセル(つまりこれから連番が入る空白セル)を選択、 範囲指定し(セル数はまちまちなのでこれは手作業)、 セルを結合させるまではできたのですが、 この結合させたセルに、[(一つ上の結合セル)+(1)]の値を入力させるにはどうプログラムしたらよいでしょうか? わかりにくい説明で恐縮ですが、どなたかご教示ください。

専門家に質問してみよう