これらのような値を持つ列があります
A1
A-3 // reads: A (minus 3)
J24
J-2
A24
...
次に、最初の文字で並べ替えたいと思います。その後、次の番号で。しかし、Excelはマイナスをダッシュとして読み取り、そのように並べ替えます
A1
A2
A3
..
A-1
末尾の文字がある特別な機会があります
F2B
F-2B
A-Zソートをどのようにしたいか
A-3
A-2
A-1
A0
A1
..
Z-3
Z-2
Z-1
Z0
Z1
Z2
..
VBAなしでこれを解決する方法はありますか?
文字列を個々のコンポーネントに分割してカスタムソートすることはできますが、列形式の指定がないと、推測のみを提供できます。
まず、以下のようにスプレッドシートを設定します(列名は必要ありませんが、並べ替えダイアログに追加するために追加されました)。この例では、文字列は最大6文字であると想定しています。
次のように数式をコピーします。
=MID(A2, 1, 1)
を列B2に入力します。=IF(MID(A2, 2, 1) = "-", IF(MID(A2, 3, 1) = "", "", "-" & MID(A2, 3, 1)), MID(A2, 2, 1))
を列C2に入力します。=IF(MID(A2, 2, 1) = "-", IF(MID(A2, 4, 1) = "", "", "-" & MID(A2, 4, 1)), MID(A2, 3, 1))
を列D2に入力します。=IF(MID(A2, 2, 1) = "-", IF(MID(A2, 5, 1) = "", "", "-" & MID(A2, 5, 1)), MID(A2, 4, 1))
を列E2に入力します。=IF(MID(A2, 2, 1) = "-", IF(MID(A2, 6, 1) = "", "", "-" & MID(A2, 6, 1)), MID(A2, 5, 1))
をF2列に挿入します。カスタムリストを使用して、以下に示す並べ替え順序を指定しました。カスタムリストにコピーします。カスタムリストは、Orderドロップダウンリストから指定できます。次に、画像のように列を並べ替え、[〜#〜] ok [〜#〜]を選択して並べ替えます。並べ替えの警告が表示される場合があります。「数字とテキストとして個別に保存された数字を並べ替える」を選択しました(重要かどうかはわかりません)。
-9、-8、-7、-6、-5、-4、-3、-2、-1、-0、-Z、-Y、-X、-W、-V、-U、-T 、-S、-R、-Q、-P、-O、-N、-M、-L、-K、-J、-I、-H、-G、-F、-E、-D、- C、-B、-A、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、0、1、2、3、4、5、6、7、8、9
これが私の最終結果です。いくつかの観察:
最初の文字を区切るために、私は式を使いました
=MID(A2, 1, 1)
後続の文字を抽出するために、次の式を使用しました。
=IF(MID(A2, 2, 1) = "-", IF(MID(A2, N, 1) = "", "", "-" & MID(A2, N, 1)), MID(A2, N-1, 1))`
Where character `N` applies to characters 3, 4, 5, and 6. The `Else` part of the first `IF` function will take care of character 2 for a non-minus sort.
擬似コードでは、式はこれを行います:
If character 2 is a minus then prep our current character N for sorting
If character N is blank then
Return a blank because we have no character to sort by
Else
Return a "-" prepended to character N
(e.g. `-5`, `-B`, which is understood by custom sort list)
End If
Else character 2 is not a minus
Return character N-1 for sorting
(-1 because minus doesn't exist for non-minus values)
End If
MID関数とIF関数を組み合わせて文字列を分割し、カスタムソートを適用して最終結果を達成しました。私は以下の仮定をすることによっていくつかの自由をとっています:
A, B, Y, Z
)。-
の値は、値のない値の前に来るようにソートされます(例:-24B, -24A, -2B, -2A, -1, 1, 2A, 2B, 24A, 24B
、この順序で)。さらに:-
が前に付いている値の場合、並べ替え順は数値の降順とアルファベットの降順ですが、数値はアルファベットの前にきます。例:-24
は-2
より前に来るため、-24A
は-2A
より前に来ます。B
はA
の前にあり、B
とA
はそれぞれ-B
と-A
のように扱われるため、-2B
は-2A
より前に来ます。4
はB
の前にあるため、-24B
は-2B
の前にあります。2
は24
より前に来るため、2A
は24A
より前に来ます。A
はB
より前に来るため、2A
は2B
より前に来ます。A
は4
の前にあるため、2A
は24A
の前にあります。ルールは、列のフォーマット方法によって大きく異なります。
並べ替えの概要は、カスタム並べ替えリストに以下の順序で記載されています。負の数字とアルファベット文字は、アルファベットの前に来る数字の降順でリストされます。正の数字と英字は、数字の前に来る英字で昇順にリストされます。
-9,-8,-7,-6,-5,-4,-3,-2,-1,-0,-Z,-Y,-X,-W,-V,-U,-T,-S,-R,-Q,-P,-O,-N,-M,-L,-K,-J,-I,-H,-G,-F,-E,-D,-C,-B,-A,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,0,1,2,3,4,5,6,7,8,9
ソートリストは、望ましい結果を得るのに必要な任意の方法で順序付けできることに注意してください。下記は用例です。
-Z to -A
を-A to -Z
に並べ替えます(たとえば、A-2A
がA-2B
の前に来ます)。-9 to -0
の後ろに-Z to -A
を移動して、数値の前にマイナスアルファを取得します(例:J-2F
がJ-24
の前に来る)。A
からZ
の前に0
を9
に移動して、英字の前にマイナスでない数値を取得します(例:F21
がF2A
の前に来る)。このカスタムソートリストは、左の列から右の列に向かって各文字に個別に適用され、最終的なソート結果が得られます。
あなたの問題はいくつかのヘルパー列を使用して解決できます:
仕組み:
B2:B13
_です。C2
_の数式。 =Left(B2,1)
、記入してください。D2
_の数式。 =VALUE(RIGHT(B2,LEN(B2)-1))
、記入してください。Column
、_Sort ON
_&Order
を設定し、Okで終了します。Second Option
_&hitOkから最後に終わる。N.B。