- ベストアンサー
Excel マクロの複数範囲指定方法について
- Excel2007を使う超初心者です。C10~C151を降順で並び替えたをしたいのですが、その際、A10~A151の項目も並べ替えた時にCをキーにして、並び替えた時にAとCを項目と合わせてソート出来るように改造したいのですが、下記、マクロのどこを編集すれば出来るようになるのでしょうか?
- 1つのシートに加えて、別に2つのシートにも同じ処理を行いたいと思っています。
- 最後にもう一つ指定範囲の異なるシートがあり、上記と同様にA8~A33の項目と、H8~H33をH列をキーとして降順に並び替えがしたいと思います。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
簡単な方法:AをCにくっつけて一緒に並べ替えてから,Aに戻す sub macro1() dim w as worksheet for each w in worksheets(array("A店舗","B店舗","C店舗")) with w .range("A:A").copy .range("D:D").insert .range("C10:D151").sort key1:=.range("C10"), order1:=xldescending, header:=xlno .range("D:D").copy .range("A1") .range("D:D").delete shift:=xlshifttoleft end with next with worksheets("T種類") .range("A:A").copy .range("I:I").insert .range("H8:I33").sort key1:=.range("H8"), order1:=xldescending, header:=xlno .range("I:I").copy .range("A1") .range("I:I").delete shift:=xlshifttoleft end with end sub #ご相談に説明されてない他のセルに影響するようなら,適切に調整して利用します。 >AとCを項目と合わせてソート出来るように改造したい ご相談は文字通りには,「A列とC列を一緒に(キーはC列),ただしB列は除外して並べ替えたい」と読めますが? マクロ以前にそもそもエクセルの使い方として,間を飛ばして「AとCだけを一緒に並べ替える」事は出来ません。 あなたが例示したマクロはもちろん「AとBとCを一緒に並べ替える」なワケです。
その他の回答 (1)
- FEX2053
- ベストアンサー率37% (7991/21371)
C列を「降順」に並べ替えて、かつA列が同じならばその中で A列の「降順」に並び替えるなら、単純にKeyを追加すればいい だけです。 Key1:=Worksheets("A店舗").Range("C9"), Order1:=xlDescending, Header:=xlNo Key2:=Worksheets("A店舗").Range("A9"), Order2:=xlDescending, Header:=xlNo この辺はこちらを、どぞ。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_sort.html 問題は質問者さんの言う「A10~A151の項目も並べ替えた 時にCをキーにして、並び替えた時にAとCを項目と合わせて ソート出来るように改造」の意味が全く分からないことです。 どうも「C列を「降順」に並べ替えて、かつA列が同じならばその 中でA列の「降順」に並び替える」んじゃなさそうなので・・・。
お礼
keithinさん ありがとうございます。 はい、keithinさんの仰るとおりの事がやりたかったのです。 グッドアドバイスありがとうございました!