• ベストアンサー

複数列の重複と空白を削除するマクロ(VBA)

マクロの初心者です。 添付写真のように、複数列の重複セルと空白セルの両方を削除し、各列のデータを10列目から並べたいのですが、この場合、どのようなマクロを書けばよいでしょうか。 データの個数: 列によりますが、最大1000行程度 列数: A~J(空白列はありません)

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

とりあえず、J1セルに「abc」と記入してから、もう一回マクロを動かしてみます。 >エラーが出てしまいます。 マクロのどの行でどんなエラーが出たのか、その時点でシートはどういう状況になっているのか、具体的な状況が何もありません。もうちょっと丁寧に情報提供してください。なので勝手に推測するしかありませんが、あなたがご相談にご自分で書いたのと、勝手に「違うこと」をやっていると考えられます。 #どこでエラーが起きたのか知る方法:  エラーのダイアログでデバッグをクリックする #シートの状況を調べる方法:  マクロの実行前とエラーで止まった時点のシートを見比べて、どこがどう変化したか確認する あるいは現在の状況を説明するのがメンドクサイなら、別にかまわないので次のマクロで動かします。 sub macro1()  dim i as long  on error resume next  for i = 1 to 10  with columns(i)   .specialcells(xlcelltypeblanks).delete shift:=xlshiftup   .removeduplicates columns:=1, header:=xlno  end with  next i  range("1:9").insert shift:=xlshiftdown end sub

jpng_ng
質問者

お礼

ありがとうございます。説明が不足しており申し訳ありません。 デバッグの見方もわかりました。 うまく動いているようです。 この場を借りて申し訳ないのですが、仮にBeforeがSheet1、AfterをSheet2に指定したい場合の指定はどのようにできるのか教えていただけませんか?(Sheet1は変化させません) よろしくお願いします。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

sub macro1()  dim i as long ’1列から10列まで  for i = 1 to 10  with columns(i)  ’空白セルと重複セルを除去する   .specialcells(xlcelltypeblanks).delete shift:=xlshiftup   .removeduplicates columns:=1, header:=xlno  end with  next i ’1~9行まで空ける  range("1:9").insert shift:=xlshiftdown end sub ぐらいで。

jpng_ng
質問者

お礼

申し訳ありません。追記します。 400エラーが出ますが、Sheet1の1行目から、各列とも空白と重複が削除されて並びます。 Sheet2の10行目以下に転記する方法をご教示願います。

jpng_ng
質問者

補足

ありがとうございます。 実行してみたのですが、400というエラーが出てしまいます。 解決方法はありますでしょうか? Officeバージョンは2010です。