• 締切済み

【Excel】文字列だと並べ替えができません

書式設定の「数値」で並べ替えをすると普通にできるのですが、数に円などの単位をつけて文字列に設定した場合、並べ替えができません。 文字列では並べ替えができないのでしょうか? もしそうでしたら、数値に単位をつけて並べ替えをする方法を教えてください。 バージョン2019利用です。

みんなの回答

  • SI299792
  • ベストアンサー率48% (720/1491)
回答No.3

直接は無理です。単位を付けて入力すれば、文字列扱いになります。 ・痴漢で「円」を消す。 ・関数で「円」を消す。 どちらかが必要です。 関数で「円」を消す。 A1から下に、「1000円」の様に単位付きで入っているとします。 B1: =SUBSTITUTE(A1,"円","")+0 下へコピペ。 これで、B列に数字に変換した値が出るので、B列で並べ替えます。

全文を見る
すると、全ての回答が全文表示されます。
  • asciiz
  • ベストアンサー率70% (6659/9438)
回答No.2

>文字列では並べ替えができないのでしょうか? Excelは「文字列」の並べ替えにも対応しています。 文字列の並べ替えというのは、 ・1文字目を見て、文字コードの小さい順に並べる ・1文字目が同じ場合は2文字目を見て、文字コードの小さい順に並べる ・2文字目も同じ場合は3文字目を見て、文字コードの小さい順に並べる(以下同様) こんな風に、左側から1文字ずつ比較していきます。 半角も全角も「1文字」扱いで、半角文字は全角文字より先に並びます(文字コードが小さい) これは、読み仮名順で並べ替えるときには、ごく当たり前のものとして、理解できるでしょう。 例) あい・あいこ・あいだ・あし・あめ は、この順に並ぶ 数値の場合、1・2・3・10・20・50・100 は、この順で並びますね。 一番右を1桁目として、数としての大小を見ているからです。 しかし「円」を物理的につけた場合、それはセル内に「文字列」が入っていることになります。 そうすると、「文字列しての並べ替え」を行うので、 100円 (↓下と比較した場合、1文字目"1"、2文字目"0"、3文字目"円”より"0"が小さいので、こちらが先になる) 10円 (↓下と比較した場合、1文字目"1"、2文字目"円”より"0"が小さいので、こちらが先になる) 1円 (↓下と比較した場合、1文字目"1"が"2"より小さいので、こちらが先になる) 20円 (↓下と比較した場合、1文字目"2"、2文字目"円”より"0"が小さいので、こちらが先になる) 2円 (↓下と比較した場合、1文字目"2"が"3"より小さいので、こちらが先になる) 3円 (↓下と比較した場合、1文字目"3"が"5"より小さいので、こちらが先になる) 50円 (これらの中では一番「大きい文字列」と判定される) こういう順に並んでしまうわけなのです。 この順に並ぶのは、文字列として正しい仕様です。 ---- では、「円」を付けても数字の大小に従って並ばせるにはどうしたらよいかというと、「セルの書式設定」を使います。 セル自体には、10とか20とか、数字のみを入れます。 そして書式設定で、ユーザー定義→「0円」と入れます。 こうすると、実データが数値のまま、表示だけ「○○○円」と見えるようになります。 実データは数値ですから、これを並べ替えると、数の大小で並びます。 ---- ただし「0"円"」という書式設定は、値段表示としてあまりうまくありません。 1000→「1000円」、2000000→「2000000円」と、桁区切りが無いため、モノの値段としては見づらくなってしまいます。 そこで書式設定に使うと良いのが、「#,##0"円"」というもの。←【この回答のお勧め】 こうすると、3桁区切りのカンマが表示されるようになり、不要な桁は見えません。 10→「10円」、1000→「1,000円」、2000000→「2,000,000円」という感じになります。 ちなみに「0,000円」という指定もできますが、「0」指定は「その桁が0なら0を表示」ということを意味しています。 そうすると、10→「0,010円」、100→「0,100円」、1000→「1,000円」という感じになり、数が小さいと何だか変な表示になってしまうのです。 「#」指定は、「0」指定と同く数値の桁数表示を表すのですが、「その桁が0になるときは表示しない」事となっているので、先ほどの指定ならば、0~999円の時にも都合よく表示してくれます。 その他にもさまざまな書式設定文字列があり、詳しい解説は回答No.1さんの引用したURLの通りです。 >Excel のセルの表示形式で [ユーザー定義] に使用できる書式記号について >https://support.microsoft.com/ja-jp/topic/979767bb-6635-c0f5-5e7f-32c69715ccfa

全文を見る
すると、全ての回答が全文表示されます。
  • Nebusoku3
  • ベストアンサー率38% (1454/3796)
回答No.1

関連するQ&A

  • Excel2003での並べ替えについて

    行を上から 1>1A>1B>2>2A>2B・・・15>15A>15B という順序で 並べ替えしたいのですが、可能でしょうか? 対象行のセルを書式設定で文字列や数値に変換してみたのですが 意図したようには並べ替えができませんでした。 何卒ご教示の程、宜しくお願い致します。

  • excel2003並べ替えについて

    オラクルのデータをexcelにコピーしてきて、そのデータを並べ替えでソートするとソートが正しく行われない。 1-Sep-2004 2-Sep-2004 ・・・ 上記の様な日付データの列を「並べ替えで」にて 「昇順、降順」両方でソートしてみた所 おおよそソートされているものの、Decの間にSepが きていたりと部分的にソートが正しくされていませんでした。 「書式設定」にて日付や数値など試してみましたが 変わりありませんでした。 OfficeXPがインストールされているマシンで同様に「並べ替え」を行うと、並べ替えの条件を設定するポップアップ後にもう一つポップアップが表示され内容は ------ 並べ替えに選択されたデータ範囲には数値形式とテキスト形式が混在している ・数値として処理 ・??? ------ のように二つの選択肢が表れます。 数値として処理をすると正しくソートされ、もう一つを選択すると2003での結果と同じくソートが正しくされませんでした。 もとのデータはどのように作成されたのか詳しくは わかりません。社内でOfficeが段階的にバージョンアップされてきており、このような質問を受けており困っております。宜しくお願いいたします。

  • 文字列の並べ替えで、お知恵拝借

    Excel 2003、2013 を使用しています。 添付図に基づいて説明させていただきます。 列Bの文字列データを[昇順]で[並べ替え]ると、 “ふりがなを使う”の場合は、列Cに示した番号順で、 “ふりがなを使わない”場合は、列Dに示した番号順で、 上から並べ替わります。 しかしながら、私の実力では実際に[並べ替え]操作をしてみないことには、列C、Dの数値が判明しません。 質問は、=RANK()関数みたいに、[並べ替え]操作をしなくても、列C、Dに示した数値を求めたいので、その方法を教えてください。 差行列、作業シートを使用も、式が寿限無式になることも厭わないので、マクロを使わない方法を教えてください。 文字列の長さは最大10文字としておきます。

  • EXCELで並べ替えがうまくいきません

    EXCELで他人からもらった数値が入っているデータに追加して入力をして、その数値の列をキーにして並べ替えをしたのですが、最初のデータとの比較がされていないようです。書式はどちらも「標準」にしています。(スタイルに設定されている書式を見ても全く同じになっています) そこで、列全体の書式を「数値」にしてやり直したのですがやはりうまくいきません。あとから入力したデータは「数値」で認識されていますが、元のデータは「文字列」のままのようなのです。よろしくお願い致します。

  • 【Excel】数値、文字列に適したユーザー定義

    自動で文字列の語尾に文字をつけるのが目的です。 ユーザー定義ではいろいろな形式が作れますが、以下のような形の場合、条件ごと、もっとも適切な形を教えてください。 (1)数値の後ろに「円」 ・桁数は5桁 ・この書式同士で計算できるようにしたい (2)数値の後ろに「齢」 (3)数値の後ろに「kg」 たとえば何に対しても「G/標準」を使う人がいますが、数値に適した、または文字列に適したというように、語尾に自動で何かをつけるにしてもそれに見合う形式があると思います。 また「#,##0"円"」という形についていまいちわかりません。 この設定にして 「1000」と入力すると当然「1,000円」となります。 「1001」と入力すると当然「1,001円」となります。 「1」または「1111」と入力すると当然「1円」「1111円」となります。 しかし「0」または「0000」と入力するといずれも「0円」となります。 正数を入れた場合、入力した数(桁数)どおり反映します。 つまり、「#,##0"円"」の「0」は、0を入力したとき(桁数に関係なく)入れたとき絶対0になります。 試しに「#,#0#"円"」と設定したら「01円」となりました。 「0」を設定したら、「0」のときだけ「0」になるのでしょうか? 「#」と「0」の違いは何でしょうか?

  • 並べ替えの結果でわからないことがあります。

    下記状態の、行数約1000行の数字類の並べ替えがうまくいきません。 列内容 A列:名称 B列:フリガナ C列:ページ数(ここで並べ替えを行う) ページ数列の書式  「文字列」※フォント・サイズは統一されています  3桁表示(001、002、003・・・)  イレギュラー的に  「*001」や「001-1」などという表記分もあります。 いざ、上記状態のものをC列にて並べ替えを行うと、「231」「230」「001」「002」「003」(以下普通のソート状態)となります。 なぜか「231」「230」の行だけが一番上に来て、その後通常の並べ替えが行われています。 A列、B列には特別な仕様(ただの文字列のみ)は行っておらず、並べ替え方法も「データで並べ替え」・「C列で昇順」のみとなっています。 以上、よろしくお教えください。

  • エクセルの文字列並べ替えについて

    エクセルの文字列並べ替えについて エクセル2000です。 半角文字列の数字とアルファベットを通常のエクセルの機能で昇順で並べ替えた場合 012 013 111 1AA 1B1 211 222 22C 23A 2AB 2BC のように並ぶと思います。(ここでの数字は数値でなく、すべて文字列です) 数字→アルファベットの順番のようです。 これを「アルファベット」→「数字」の順番で並べ替える方法はないでしょうか? 以下のような順にです。 ユーザー定義のリストに基づいた並べ替えがあることは存じていますが、3桁だけでも英数混在だと36×36×36=46,656個のリストを登録しなければならないことになり、現実的と思えません。 目的は、ホストコンピュータから出力される紙のデータがなぜかこのような順で出てきて、それにエクセルで作成したデータをあわせる必要が出てきたためです。 012 013 1AA 1B1 111 2AB 2BC 211 22C 222 23A エクセルの一般機能でもVBAでもかまいません。ご教示いただけると幸いです。

  • 【Excel】セルの書式設定で標準と文字列の違い

    「セルの書式設定」の「表示形式」での「標準」と「文字列」の違いについてです。 「文字列」は「[文字列]は、数値も文字列として扱います。セルには入力した値がそのまま表示されます」 とあります。 しかし「文字列」に数値を入力するとセルの左上に、グリーンの▼印がでてきて、「数値が文字列として保存されています」というエラー表示がでます。 数値も文字列として扱われるはずですがなぜなのでしょう。いちいち「エラーを無視する」にしなければならないので面倒だなと思いますので、今度は「標準」で入力しようと思いますが、 「標準」は「セルの値に対して一般の書式を適用します(特定の書式を指定しません)」 とのことです。一般の書式、特定の書式が何を指すのか分かりません。 文字列が、数値として扱われない理由と、「標準」「文字列」のそれぞれの特徴を教えてください。

  • エクセル 文字列で入力した数字を数値にする

    エクセルで、文字列の設定で入力した数字は、[セルの書式設定]で、数値として設定しても、文字列のままになります。 (セルの左上に、文字列と分かる緑の三角が付いたままになり、表を作ってもグラフの表示は出来ません。) 数値として数字を入力をした後、[セルの書式設定]で文字列にして、再び[セルの書式設定]で数値にすると、数値にはなります。 (この場合、文字列にしても、セルの左上に緑の三角が付かず、このまま表を作ると数値(小数点以下が0の場合は小数点以下が削除されます。)の扱いとなりグラフの表示が出来ます。) 文字列で入力した数字は、数値にはならないのでしょうか? よろしくお願いいたします。

  • 文字列の計算について。。。

    Excelでなのですが、外部データの取り込みをしました。 その時に、文字列で取り込んだ数値を計算したいのですが、 うまく出来ません。 セルの書式設定で数値にしたのですが、計算出来ません。 関数を使って数値に変換すると出来たのですが、 50枚シートがあるものが10ブックあります。 計算したい列もそれぞれのシートでばらばらなので困ってます。 簡単に出来る方法はないでしょうか?

専門家に質問してみよう