- 締切済み
複数列の並び替え
A B C D E ・・ 1 10 8 25 30 40 2 11 53 3 21 28 32 4 52 5 29 ・ ・ 上記の数値を並べ替え(昇順or降順)をするのに 一度ではできないのでしょうか? ちなみにB以降をAの下に貼り付けて並び替え以外の方法でお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- mu2011
- ベストアンサー率38% (1910/4994)
多分、マクロだと一回で済むと思いますが、以下の方法は如何でしょうか。 (1)別シートA1セルに以下の関数を設定し、必要列分連続コピー =IF(ISERR(SMALL(Sheet1!A:A,ROW())),"",SMALL(Sheet1!A:A,ROW())) (2)範囲列を下方向にコピー (3)並び替え終了後、その範囲をコピーし、形式を選択して貼り付けの値のみで別エリアに貼り付けして下さい。 因みに降順は、上記関数のsmallをlargeとします。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
エクセル? 行毎にソートする? 列毎にソートする? 矩形でソート? 選択した矩形でソートの場合のマクロサンプル Public Sub sort() 'ソートモドキ Dim x As Range, i, wk Dim NumList, max Set NumList = CreateObject("Scripting.Dictionary") max = 0 '0以下の数字はない For Each x In Selection If Not NumList.Exists(x.Value) Then '重複チェック NumList.Add x.Value, x.Value If max < x.Value Then max = x.Value '空白は0扱い End If Next i = 1 Selection.ClearContents For Each x In Selection Do Until NumList.Exists(i) i = i + 1 If i > max Then Exit Sub Loop x.Value = NumList.Item(i) i = i + 1 Next End Sub Public Sub sort2() 'ソートモドキ Dim x As Range, i, wk Dim NumList, max Set NumList = CreateObject("Scripting.Dictionary") max = 0 '0以下の数字はない For Each x In Selection If Not NumList.Exists(x.Value) Then '重複チェック NumList.Add x.Value, 1 If max < x.Value Then max = x.Value '空白は0扱い Else '重複時の処理 NumList.Item(x.Value) = NumList.Item(x.Value) + 1 End If Next i = 1 Selection.ClearContents For Each x In Selection Do Until NumList.Exists(i) i = i + 1 If i > max Then Exit Sub Loop x.Value = i NumList.Item(x.Value) = NumList.Item(x.Value) - 1 If NumList.Item(x.Value) = 0 Then i = i + 1 End If Next End Sub ---------------------------------------------------------- sortは重複する項目を削除する sort2は重複する項目を削除しない
お礼
早速の回答ありがとうございました。 マクロは全くのシロウトなので一度チャレンジはしてみましたが操作がよくわからずできませんでした。 ありがとうございました。
- mshr1962
- ベストアンサー率39% (7417/18945)
降順の場合 G1=LARGE($A$1:$E$5,ROW(A1)) これを下方にコピー 昇順の場合はSMALL関数で同様に
補足
早速の回答ありがとうございます。 さらに質問ですみません。 下記のような数値の場合ではどうすればいいでしょうか? A B C D E ・・ 1 A0010 A0008 A0025 A0030 A0040 2 A0011 A0053 3 A0021 A0028 A0032 4 A0052 5 A0029 ・ ・ ・ ・ A3025などの数値もあります
補足
早速の回答ありがとうございます。 さらに質問ですみません。 下記のような数値の場合ではどうすればいいでしょうか? A B C D E ・・ 1 A0010 A0008 A0025 A0030 A0040 2 A0011 A0053 3 A0021 A0028 A0032 4 A0052 5 A0029 ・ ・ ・ ・ A3025などの数値もあります