Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
並び替え条件
投稿日時: 22/03/25 23:14:49
投稿者: goudoufu

あるシート内の表をVBAで並び替えしたいのですが
並び替え条件が複雑です。
 
A列にいくつかプルダウンで選ばれた項目があるのですが
@、A、B、C、Dとあるとして
第1優先 B降順
第2優先 A昇順
第3優先 @降順
第4優先 C昇順
第5優先 B列の昇順
第6優先 C列の昇順


以下同じようなものが続く
 
といった感じです。
どのように設定すればよいのでしょうか…。
ご教示いただけると助かります。

回答
投稿日時: 22/03/26 07:01:31
投稿者: simple

イメージが湧かないので追加説明をお願いします。
@、A、B、C、Dというのは、A列にある項目内容ですね?
 

   A列   B列   C列
1   @     a    e
2   A     b    h
3   @     c    g
4   C     d    f

このとき、第1優先 B降順とはどのような意味ですか?
具体例で説明してもらえませんか?

回答
投稿日時: 22/03/26 11:20:25
投稿者: WinArrow
投稿者のウェブサイトに移動

意味不明な説明・・・・誰に森合出来ないと思います。
 
「優先」という用語を勘違いしているか、または、理解できていないような気がします。
 
A列セルの「値」が、並べたい順序になっていないのではないか?と推測します。
 
現状と位置する結果を表形式で説明してみましょう。
 

回答
投稿日時: 22/03/26 13:24:17
投稿者: simple

こういうことでしょうか。

(1)第1優先は、A列をBA@CDのユーザー指定の順序で、
(2)第2優先は、B列の昇順
(3)第3優先は、C列の昇順
以下、別の列についても同様に指定したい。

自前のコードを作ってソートするより、
Excelに標準で備わっているソート機能を使うとよいと思います。
 
ユーザー設定リストの指定は下記参照。
https://www.moug.net/tech/exopr/0030016.html
あとは、それを使ったソートの処理をマクロ記録すればコードが得られると思います。
いかがでしょうか。

投稿日時: 22/03/26 14:24:26
投稿者: goudoufu

ありがとうございます。
AccessだとSQLで設定できていたのですが、ExcelVBAで同様にする方法がわからず…
ご教示ありがとうございました。