Excelでの英数字の並べ替え


11

Excelで、a-1、a-10、a-100、a-11の代わりにa-1、a-2、a-3 ... a-123から英数字を並べ替えることはできますか?

最も古いものから新しいもの、またはAZを介して並べ替えると、確実に期待どおりの結果が得られません。セルを数値としてフォーマットしようとしましたが、役に立ちませんでした。

行き詰まっています。


こんにちは、@ beccabeccaです。これは、あなたと同じような質問を持つ人々にとって役立つだけでなく、あなたに解決策を提供するために働いた人々に報いるため、答えを受け入れてください。乾杯!
David Michael Gregg 2014

回答:


4

結果

ユーザー@ fixer1234は正しい、おそらく文字列関数を使用したいこれを行う1つの方法を次に示します。

ステップ1

[更新しました]

「数値」列で範囲を強調表示し、ハイフンでテキストを分割します。

Data> Text to Columns> Delimited> Next> Other: ->Finish

テキストボックスにハイフン(-)が必要であることに注意してくださいOther:。また、これを行う前に、隣接する列(右側)が空であることを確認してください。これにより、重要なデータが上書きされなくなります。

この関数を使用して、列Aから数値を抽出することもできます。

=RIGHT(A2,LEN(A2)-SEARCH("-",A2))

ステップ2

上記のスクリーンショットからわかるように、次のステップでは、最大の数値よりも桁が少ない各数値の先頭にゼロを追加しますこれにより、これらの数値を希望どおりに並べ替えることができます。

しかし、最初に、事実の調査を少し行う必要があります。最大数が簡単にわかる場合は、その最大数の数字を数えるだけです。これは、次の関数で使用するゼロの数になります。手動で最大数の桁を数えることなく、最長数を決定する別の方法があります。

[更新]次の関数を使用して(これまでのところ理由 よくわかりません)、最長の数値を決定できます。

=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桁というようになります。

ステップ3

最後に、「拡張」列で、この関数は「数値」列の数値を、ステップ2で使用する必要があると判断した先行ゼロの数を含むテキストに変換します。

=TEXT(C2,"000")

必ずゼロの周りに引用符を付けてください。

最大数が8桁の場合、関数は次のようになります。

=TEXT(C2,"00000000")

2

簡単な解決策は、文字列関数を使用して、数値を新しい列に数値として配置することです。次に、その列で並べ替えます。値がどのように変化するか、またはそれらがどのように配置されるかを指定しませんでしたが、例を示します。

「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-」文字を引いた長さ)。値関数は、その結果を数字の文字列ではなく数値に変換します。


申し訳ありませんが、もう少し詳しく説明していただけますか?文字列関数とは何ですか?
beccabecca 2014

したがって、B3は= value(mid(a3,3、len(a3)-2))になりますか?私は正しいですか?それからそれはそうですか?申し訳ありませんが、私は馬鹿げた質問をしないことを願っています...
beccabecca '19

了解しました。B2で数式を作成したら、コピーして、必要な数の行のBセルを強調表示して貼り付けることができます。行ごとに一致するようにセル参照が自動的に変更されます。
fixer1234 2014

2

次のデータがあります。

[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

AlphaNumeric文字列に従ってソートされる初期データ

学生とマークは、英数字の文字列である登録番号に従って配置してください。最終的な出力は次のようになります。

[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

最終的な出力は次のようになります

方法:

英数字の文字列を純粋な数値に変換する手順

上記のスナップショットは自明ですが、手順は次のとおりです。

  1. =LEFT(B4, 2)数式を使用して列のアルファベット部分を抽出します。ここで、「2」は文字列のアルファベットの数を示し、私の文字列はから始まりB4ます。

  2. を使用して、このアルファベット部分に番号を割り当てます =COLUMN(INDIRECT(E4&1))

  3. =RIGHT(B4,2)数式を使用して、登録番号の数値部分を抽出します。ここで「2」はノーです。文字列内の数値の。

  4. 2と3の2つの部分を連結します

  5. 以下を使用してこれらを「純粋な」数に変換します =VALUE(H4)

  6. 最後の列を元のテーブルにコピーし、オプション「値として貼り付け」を使用します

    数値に変換された英数字文字列が追加された初期データ

  7. 次に、最後の列に従ってソートし、「選択範囲を拡張」を選択します

    並べ替え1

    ソート2

  8. できた!!!

    最終出力

重要:ヒント-> 1から5までの手順を組み合わせて使用​​します =VALUE(CONCATENATE(COLUMN(INDIRECT(LEFT(B4,2)&1)),RIGHT(B4,2)))


余談ですが、この例のように、登録番号はすべて同じ長さで、数値部分に先行ゼロをうまく使用しています。通常のソートはそのままでは機能しませんか?
アルジャン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.