- ベストアンサー
エクセルマクロ(VBA)の空白削除と重複削除について
- エクセルマクロ(VBA)を使用してデータの空白と重複を削除し、上詰めに整列する方法を教えてください。
- また、Sheet2のデータを元にマクロを実行して、結果をSheet3に表示する方法を教えてください。
- 現在のマクロでは、実行元のデータがある同じシート内で整列されますので、その方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>マクロの結果をSheet3に反映させていのですが、 はて? シート2じゃなくシート3にするだけですが。 sub macro2() dim i as long worksheets("Sheet3").range("A:J").value = worksheets("Sheet1").range("A:J").value worksheets("Sheet3").select on error resume next for i = 1 to 10 with columns(i) .textocolumns destination:=cells(1, i), datatype:=xldelimited, fieldinfo:=array(1, 1) .specialcells(xlcelltypeblanks).delete shift:=xlshiftup .removeduplicates columns:=1, header:=xlno end with next i range("1:9").insert shift:=xlshiftdown end sub #丸投げで全部やって貰わないとご自分じゃ全く何もできない/やりたくないなら、最初から丁寧に「ホントにヤリタイ事を」ご相談に書いてください。と、一言ぐらい言わせてもらってもバチは当たらないと思います。 #そんなつもりじゃありませんというのでしたら、ついでにちょこちょこっと聞いちゃえと「ついで感覚」で補足投稿をしているから説明が足りません。ご自分の説明不足で伝えきれていなくて、意図と違う回答が寄せられてしまった状況をキチンと踏まえて、ホントにやりたかった事を詳しく「新しいご相談として」丁寧に作成し直して、改めて投稿するようになさってください。 しかし、そもそもで言うと >Set rngListとrngResultを設定しないといけないのでしょうか。 そもそもこれは何か他のご相談の、他の方から寄せられたマクロについての追加ご質問ではありませんか? 私からはそんな内容は全く触れていませんので、こちらにお問い合わせいただいても困ります。 ほっぽっとくのも一つの対応なんですが、こちらの件についてもまぁ一言言わせてもらう事にしました。
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
なるほど。シート1が、「実際には数式が入っていた」のがナイショだったのが原因ですね。 sub macro2() dim i as long worksheets("Sheet2").range("A:J").value = worksheets("Sheet1").range("A:J").value worksheets("Sheet2").select on error resume next for i = 1 to 10 with columns(i) .textocolumns destination:=cells(1, i), datatype:=xldelimited, fieldinfo:=array(1, 1) .specialcells(xlcelltypeblanks).delete shift:=xlshiftup .removeduplicates columns:=1, header:=xlno end with next i range("1:9").insert shift:=xlshiftdown end sub #補足 上述は数式が計算している""を除去します。 それとは別に、たとえば「スペース」とかが紛れてると、このやり方では取り除けない場合もあります。 カンペキを期すならシート1にオートフィルタを取り付けて、「列ごとに」(空白)で絞って見た目空っぽのセル範囲を選んでDeleteキーを押す、A列をやったら次はB列…とJ列まで操作を行った方が確実です。 また今の「シート1(じゃないですけど)」の数式で””を計算させるのを止めて、もっと処置しやすい例えば「エラー値(NA()など)」でも計算させておいて、マクロでそれを(空白セルを除去させた代わりに)除去したほうが判りやすいです。
補足
ありがとうございます! お陰様で、ほぼ思うような動きになりました。 マクロの結果をSheet3に反映させていのですが、 Set rngListとrngResultを設定しないといけないのでしょうか。 教えていただけませんでしょうか。