質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

2081閲覧

ExcelVBA Sort ユーザー定義での並び替えについて

koe0813

総合スコア5

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2018/05/18 14:31

前提・実現したいこと

VBA初心者です。独学で学んで半年程度です。

ExcelVBAにて、ユーザー定義での並び替えを行いたいです。
Excel2013
A列~G列:顧客情報
H列:顧客管理番号
I列:パターン番号A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3
※最大でB3までで、それ以下の場合もあります。
※並び替えのキー
J列~W列:個数などの情報や、配送元の住所など

I列キーとして、上記パターン番号順に並べ替えたいです。

発生している問題・エラーメッセージ

VBAを実行すると
ユーザー設定の並び替えで
「A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3」の順序は保存できているのですが、
実行すると、
「A,A1,A2,A3,A4,A5,A6,A7,A8,A9,B,B1,B2,B3,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,」
の既定の昇順に並び替えられてしまう

該当のソースコード

ExcelVBA

Sub ボタン1_Click()

Worksheets("CC").Activate

'ユーザー定義での並び替え
Application.AddCustomList ListArray:=Array("A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A1,A2,A3,A4,A5,A6,A7,A8,A9,B1,B2,B3")

Worksheets("Sheet1").Select

Worksheets("Sheet1").Sort.SortFields.Clear

Worksheets("Sheet1").Range("A:W").Sort _
Key1:=Range("I1"), Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=13, _
MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortTextAsNumbers

Application.DeleteCustomList (Application.CustomListCount)

End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Array関数の使い方が間違ってます。

VBA

1'ユーザー定義での並び替え 2Application.AddCustomList ListArray:=Array("A","B","C", 中略 ,"B1","B2","B3")

Split関数を使った方が記述が楽です。

VBA

1'ユーザー定義での並び替え 2Application.AddCustomList ListArray:=Split("A,B,C, 中略 ,B1,B2,B3",",")

Excel2007以降なら、Sortオプジェクトを使った方がいいかも。

vba

1 With Worksheets("Sheet1").Sort 2 .SortFields.Clear 3 .SortFields.Add Key:=Range("J1"), _ 4 CustomOrder:="A,B,C, 中略 ,B1,B2,B3" 5 .SetRange Range("A:W") 6 .Header = xlGuess 7 .Orientation = xlTopToBottom 8 .Apply 9 End With

参考リンク
Office TANAKA - Excel VBA Tips[Excel 2007のSortオブジェクト]

投稿2018/05/18 19:51

編集2018/05/19 00:46
hatena19

総合スコア33699

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koe0813

2018/05/19 02:19

ありがとうございます。! Sortオブジェクトで思い通りに動作しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問