[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『並び替え』(bb)
Excel2007 Windows 7
例 A1 A1 A1A1 B1 A1A2 C1 B1 A1A1 B1A1 B1A1 B1A2 C1A1 C1 A1A2 C1A1 B1A2 C1A2 C1A2
数字のみのデータと、アルファベット+数字のデータを並び替えしたいのですが、
数字のみは昇順 アルファベット+数字は基本は頭文字で昇順しますが、頭文字が違っても 二文字目以降が全く一緒のものは上に並べるといものです。
昇順にすると例左の様になってしまいますが、例右の様にしたいです。
説明下手ですいませんが、詳しい方お願いいたします。
VBAを使うと・・・、
標準モジュールに
'====================================================== Sub test() Dim rng As Range Dim crng As Range Dim ml As Long Set rng = Range("a1", Cells(Rows.Count, "a").End(xlUp)) ml = Evaluate("max(len(" & rng.Address & "))") For Each crng In rng With crng .Offset(0, 1).Value = String(ml - Len(.Value), " ") .Offset(0, 1).Value = .Offset(0, 1).Value & StrReverse(.Value) End With Next With rng.Resize(, 2) .Sort Key1:=.Cells(1, 2), Order1:=xlAscending, header:=xlNo
End With rng.Offset(0, 1).Clear End Sub データがA列1行目から、あるとすると・・・・、
上記のtestを実行してみてください。尚、B列は、プログラムが作業列として 使っていますので、レザーブしておいてください。
ichinose
ichinoseさん、ありがとうございます。
最初に言えばよかったのですが、、
この並び替えの条件を、オートフィルタの並び替えの様にすることはできますか? といいますのも、A列以外にも入力がありその列も同時に並び替えたいのです。
ちなみに、
>上記のtestを実行してみてください。尚、B列は、プログラムが作業列として >使っていますので、レザーブしておいてください。
上記はB列を空白にしておくということでしょうか?
>この並び替えの条件を、オートフィルタの並び替えの様にすることはできますか? ↑これ、意味がわかりません、オートフィルタの並び替え って? >A列以外にも入力がありその列も同時に並び替えたいのです。 ↑これがしたいというなら、並べ替える列を増やせばよいのですが・・・。
>レザーブしておいてください。 × リザーブの間違いです。つまり、B列はプログラムが使用しますから、 ユーザーが値を入力しても消されてしまいますよ という意味です。 例としてB列を作業列にしただけです。作業列は、どこでもよいです。 コード内の列指定を変更すれば・・・。
>Sub test() > Dim rng As Range > Dim crng As Range > Dim ml As Long > Set rng = Range("a1", Cells(Rows.Count, "a").End(xlUp)) > ml = Evaluate("max(len(" & rng.Address & "))") > For Each crng In rng > With crng > .Offset(0, 1).Value = String(ml - Len(.Value), " ") > .Offset(0, 1).Value = .Offset(0, 1).Value & StrReverse(.Value) > End With > Next > With rng.Resize(, 2) > .Sort Key1:=.Cells(1, 2), Order1:=xlAscending, header:=xlNo > End With > rng.Offset(0, 1).Clear >End Sub
まずは、Helpやレファレンスを使って上記の意味を理解してください。
尚、VBAはまるっきり知らないし、覚える気もないという考えなら・・・、 (これは、価値観の違いですから、仕方ないですよね!!) 他の投稿を待ってください。
ichinose
ichinose様
>>この並び替えの条件を、オートフィルタの並び替えの様にすることはできますか? >↑これ、意味がわかりません、オートフィルタの並び替え って?
たぶん言葉を間違えているだけでしょう。 オートフィルタの意味をご存知なく、昇順並び替えのことを言われているのかと。 おそらく、B列〜○列まで、A列の値に対応する何らかのデータが入っており、 A列を言われているような変則の昇順に並び換える時に、行を丸ごと並び変えてほしいか、○列まで並び変えてほしいのかと。
bb様
どこの列まで、どのようなデータが入っていて、どこの列までをどのような条件で並び変えたいのか、 明確にしてください。
(へむ)
>オートフィルタの並び替え オートフィルタをかけた後、下三角ボタンを押した際のメニュー内にある「昇順で並べ替え」のことでしょう。 (確か2003で追加された機能だったかと)
もっとも通常の並べ替えと変わらないと思いますが… (独覚)
皆様、お返事ありがとうございます。
>この並び替えの条件を、オートフィルタの並び替えの様にすることはできますか?
すいません。理解していない言葉で書いてしましました。。 A列を並び替えた時に、ほかの列も行ごと並び替えたいということです。
まず、ichinoseさんが作ってくださいましたコードを勉強したいと思います。
(bb)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.