Excelで、a-1、a-10、a-100、a-11の代わりにa-1、a-2、a-3 ... a-123から英数字を並べ替えることはできますか?
最も古いものから新しいもの、またはAZを介して並べ替えると、確実に期待どおりの結果が得られません。セルを数値としてフォーマットしようとしましたが、役に立ちませんでした。
行き詰まっています。
Excelで、a-1、a-10、a-100、a-11の代わりにa-1、a-2、a-3 ... a-123から英数字を並べ替えることはできますか?
最も古いものから新しいもの、またはAZを介して並べ替えると、確実に期待どおりの結果が得られません。セルを数値としてフォーマットしようとしましたが、役に立ちませんでした。
行き詰まっています。
回答:
ユーザー@ fixer1234は正しい、おそらく文字列関数を使用したい。これを行う1つの方法を次に示します。
[更新しました]
「数値」列で範囲を強調表示し、ハイフンでテキストを分割します。
Data
> Text to Columns
> Delimited
> Next
> Other: -
>Finish
テキストボックスにハイフン(-)が必要であることに注意してくださいOther:
。また、これを行う前に、隣接する列(右側)が空であることを確認してください。これにより、重要なデータが上書きされなくなります。
この関数を使用して、列Aから数値を抽出することもできます。
=RIGHT(A2,LEN(A2)-SEARCH("-",A2))
上記のスクリーンショットからわかるように、次のステップでは、最大の数値よりも桁数が少ない各数値の先頭にゼロを追加します。これにより、これらの数値を希望どおりに並べ替えることができます。
しかし、最初に、事実の調査を少し行う必要があります。最大数が簡単にわかる場合は、その最大数の数字を数えるだけです。これは、次の関数で使用するゼロの数になります。手動で最大数の桁を数えることなく、最長数を決定する別の方法があります。
[更新]次の関数を使用して(これまでのところ理由は よくわかりません)、最長の数値を決定できます。
=MAX(INDEX(LEN(C2:C14),,1))
または、次の数式をセルに入力するだけでもかまいません(上の画像では、セルがオレンジ色で強調表示されています)。ENTER
キーを押すだけでセルを設定するのではなく、ホットキーを押しますCTRL-SHIFT-ENTER
。これにより、関数の性質が変更され、配列数式に変わりINDEX()
ます。などの関数をいじる必要はありません。
=MAX(LEN(C2:C14))
(使用している特定のスプレッドシートの範囲が正確であることを確認してください。)
をCTRL-SHIFT-ENTER
押すと、セルの内容はこれに変わりますが、手動で入力しても何も起こりません。
{=MAX(LEN(C2:C14))}
ただし、やりたいことは結構です。リストの最大数を構成する桁数を決定するだけです。「1」はもちろん1桁、「10」は2桁、「100」は3桁というようになります。
最後に、「拡張」列で、この関数は「数値」列の数値を、ステップ2で使用する必要があると判断した先行ゼロの数を含むテキストに変換します。
=TEXT(C2,"000")
必ずゼロの周りに引用符を付けてください。
最大数が8桁の場合、関数は次のようになります。
=TEXT(C2,"00000000")
簡単な解決策は、文字列関数を使用して、数値を新しい列に数値として配置することです。次に、その列で並べ替えます。値がどのように変化するか、またはそれらがどのように配置されるかを指定しませんでしたが、例を示します。
「a-」プレフィックスが変更されず、エントリが列2から始まる列Aにあり、列Bが使用可能であると想定します。B2では、= value(mid(a2,3、len(a2)-2))のように記述し、必要に応じて式をコピーします。並べ替えるには、両方の列を強調表示してBで並べ替えます。
他の接頭辞、たとえばb-、c-などがある場合は、同様にテキスト部分を別の列に分割します。次に、テキスト列を最初のソート列として、数値列を2番目としてソートします。
ハイライトしたものはすべて、ソート列に従ってソートされます。
文字列関数を説明するために、文字列内から文字列を抽出するmid関数から始めます。mid(a2,3、len(a2)-2)は、a2のテキストを見て、3番目の文字(すべての接頭辞が「a-」であると仮定した最初の桁)で始まり、次の文字数を取ります。元のテキストの数より2つ少なくなります(元のテキストから「a-」文字を引いた長さ)。値関数は、その結果を数字の文字列ではなく数値に変換します。
次のデータがあります。
[Student Name] [Regn. No (AlphaNum)] [Test Score]
Lisa DD38 90
Aletta BC36 85
Ava AB40 95
Sunny BB34 91
Sofia CD36 89
Johnny CM07 80
学生とマークは、英数字の文字列である登録番号に従って配置してください。最終的な出力は次のようになります。
[Student Name] [Regn. No (AlphaNum)] [Test Score]
Ava AB40 95
Sunny BB34 91
Aletta BC36 85
Sofia CD36 89
Johnny CM07 80
Lisa DD38 90
方法:
上記のスナップショットは自明ですが、手順は次のとおりです。
=LEFT(B4, 2)
数式を使用して列のアルファベット部分を抽出します。ここで、「2」は文字列のアルファベットの数を示し、私の文字列はから始まりB4
ます。
を使用して、このアルファベット部分に番号を割り当てます =COLUMN(INDIRECT(E4&1))
=RIGHT(B4,2)
数式を使用して、登録番号の数値部分を抽出します。ここで「2」はノーです。文字列内の数値の。
2と3の2つの部分を連結します
以下を使用してこれらを「純粋な」数に変換します =VALUE(H4)
最後の列を元のテーブルにコピーし、オプション「値として貼り付け」を使用します
次に、最後の列に従ってソートし、「選択範囲を拡張」を選択します
できた!!!
重要:ヒント-> 1から5までの手順を組み合わせて使用します =VALUE(CONCATENATE(COLUMN(INDIRECT(LEFT(B4,2)&1)),RIGHT(B4,2)))