
Excel には 2 つの列があります。最初の列の (カスタム) 順序を維持しながら、2 番目の列をアルファベット順に並べ替えたいです (最初の列のみに基づいて等価性が判断される std::stable_sort を考えてください)。例:
dsf k
www d
www a
azd q
azd e
azd b
なるべきです
dsf k
www a
www d
azd b
azd e
azd q
並べ替えウィザードには、「現在の順序を維持する」オプションがないようです。カスタム順序を定義することはできますが、1,000 を超えるさまざまな要素があるため、それを実行するのは非常に面倒です。また、このカスタム順序はいつでも変更される可能性があります。
答え1
データは行2から始まり、列はC
「補助列」として使用できると仮定します。
=IF(A1=A2, C1, C1+1)
セル に入力しますC2
。(列C
が使用できない場合は、使用できる列を使用します。データが行 1 から始まる場合は、空白行を挿入するか、(引き続き) 上記をセル に入力しますC2
が、1
セル に入力しますC1
。) 下にドラッグ/入力してください。これで、(列C
) にカスタム順序が「文書化」されます。たとえば、C2
= 1、C3
= C4
= 2、C5
= C6
= C7
= 3 などです。次に、列C
と 列で並べ替えますB
。
答え2
簡単に言うと:-
- 列 A の内容をメモ帳にコピーし、クリップボードに再度コピーします。
- 両方の列を選択します。
- 並べ替え機能を選択し、「カスタム リスト」の順序を使用して列 A を並べ替えます。
- クリップボードからカスタム リストにデータを入力します。
- 並べ替え関数にレベルを追加し、列 B で「最小から最大」の順に並べ替えます。
答え3
FILE>OPTIONS>ADVANCED>EDIT CUSTOM LISTS...
一番良い方法は、カスタム オーダーを使用することだと思います。頻繁に更新する必要がない場合は、範囲全体をインポートするだけで済みます。その後、並べ替え時にそれを使用します。
VBAソリューションは次のようになります
サブソート() Dim iCustListNum を整数として iCustListNum = アプリケーション.カスタムリスト数 + 1 Application.AddCustomList ListArray:=Range("A2:A100") エラー時にGoTo err: リストを並べ替える Range("A1:B100").sort Key1:=Range("A1"), Order1:=xlAscending, OrderCustom:=iCustListNum, _ Key2:=Range("B1"), Order2:=xlAscending, Header:=xlYes, _ MatchCase:=False、方向:=xlTopToBottom '掃除 エラー: Application.DeleteCustomList リスト番号:=iCustListNum 終了サブ