• 締切済み

Excel VBA での大文字優先ソート

aa,bb,AA,BB という並びを、AA,BB,aa,bb のように大文字アルファベットが先にくるよう ソートしたいのですが、例えば以下のソート処理ではaa,AA,bb,BBとなってしまいます。 Sortメソッドではできないのでしょうか? ActiveSheet.Range("A1").Sort Key1:=Range("A1"), order1:=xlAscending, MatchCase:=True ご教授よろしくお願いします。

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 無理矢理って感じでやってみました。 データはA列の2行目以降にあるとします。 とりあえず最初の2文字だけで並び替えしています。 Sub test() Columns("B:E").Insert Dim i, j As Long For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To 2 Cells(i, j + 1) = Mid(Cells(i, 1), j, 1) Next j Next i For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row For j = 2 To 3 If Cells(i, j) <> "" Then Cells(i, j + 2).FormulaR1C1 = "=Code(RC[-2])" End If Next j Next i i = Cells(Rows.Count, 1).End(xlUp).Row j = Cells(1, Columns.Count).End(xlToLeft).Column Range(Cells(2, 1), Cells(i, j)).Sort _ , key1:=Cells(1, 4), order1:=xlAscending _ , key2:=Cells(1, 5), order2:=xlAscending Columns("B:E").Delete End Sub こんな感じではどうでしょうか?m(__)m

taro_84
質問者

お礼

回答ありがとうございます! 参考にさせていただきます。

すると、全ての回答が全文表示されます。
  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

CODE関数というものがあります。 文字列の1文字目のアスキーコードを返す変数です。 CODE("abc") なら 97、CODE("ABC") なら 65、となります。 作業列でCODE関数を使い、それを基準にソートをかければ、文字コード順になります。 それをVBAに組み込めば、やりたいことができると思います。

taro_84
質問者

お礼

迅速な回答ありがとうございます。 処理速度からSortメソッドでできればと思ったのですが、無理っぽいですね。。。

すると、全ての回答が全文表示されます。

関連するQ&A