Excelで文字列の並べ替え方法を教えてください

このQ&Aのポイント
  • Excelの列Bの文字列データを昇順で並べ替える方法を教えてください。
  • 並べ替え操作を行わずに列C、Dに表示される数値を求める方法を教えてください。
  • 文字列の長さは最大10文字とし、マクロを使用しない方法を教えてください。
回答を見る
  • ベストアンサー

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

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

  • msMike
  • お礼率71% (507/712)

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

振り仮名を使わずの例示が手元の計算と異なりますが、まぁ置いておいて。 順位は要するに「自分より『小さい(大きい)』データ」の個数+1です。 使わない方が計算は簡単で D2: =SUMPRODUCT((B$2:B$8<B2)*1)+1 以下コピー とかで十分です。 使う方はPHONETIC関数の特性を逃げるため、例えば C2: =SUMPRODUCT((PHONETIC(INDIRECT("B"&ROW(B$2:B$8)))<PHONETIC(B2))*1)+1 以下コピー みたいに、仕込みが要ります。

msMike
質問者

お礼

》 振り仮名を使わずの例示が手元の計算と異なります あれッとビックポンしました。 改めて試したら、上から 6、5、1、4、3、7、2 の間違いと分かった次第です。 ご指摘、ありがとうございます。 》 順位は要するに「自分より『小さい(大きい)』データ」の個数+1です なるほど!正に目から鱗でした。 この度は誠にありがとうございました。

その他の回答 (1)

  • f272
  • ベストアンサー率46% (8010/17118)
回答No.1

E2=CODE(B2) F2=RANK(E2,$E$2:$E$8,1)   $E$8の8は適当に変えてください。 として下にコピーすればF列にふりがなを使わない時の順位が分かります。 E2=CODE(PHONETIC(B2)) F2=RANK(E2,$E$2:$E$8,1)   $E$8の8は適当に変えてください。 として下にコピーすればF列にふりがなを使わう時の順位が分かります。 どちらも1文字目だけを見て判断していますので,1文字目が同じであれば同順位になります。それが嫌なら E2=CODE(B2) E2=CODE(PHONETIC(B2)) を E2=CODE(MID(B2,2,1)) E2=CODE(MID(PHONETIC(B2),2,1)) などと変更すれば2文字目をみることになりますから,それも加えて判断するように変更すればよいでしょう。

msMike
質問者

お礼

ご回答、ありがとうございました。 》 …などと変更すれば2文字目をみることになりますから, 》 それも加えて判断するように変更すればよいでしょう。 やはり、そういう手しかないですか。 佐村河内守氏、勅使河原由佳子さん、小比類巻かほるさんのように長い苗字の人が複数存在している場合もそういう手を使うしか方法はないですかね?

関連するQ&A

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

    エクセルの文字列並べ替えについて エクセル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】文字列だと並べ替えができません

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

  • エクセルで、1つの列で文字(降順&優先順位1)と日付(昇順&優先順位2)の並べ替えはできますか?

    エクセル(97)で、1つの列で文字(降順&優先順位1)と日付(昇順&優先順位2)の並べ替えはできますか? 例えば、C列に「2004/5/18~2004/8/10」までの日付と「予定」という文字列がありましたら、文字列(予定)を上にくるように並べ替えて、2番目の優先順位の日付は「古い順(昇順)」に並べていきたいのです。。 やりかたをご存知のかた、いらっしゃいましたらよろしくお願いします

  • EXCEL2007で並べ替えができません

    OSはXPで、EXCEL2007を使用しています。 ランダムに入力した名簿(A列:連番、B列:地区・班番号、C列:氏名、D列:住所、E列:電話、F列誕生月、G列:備考、H列:会員番号)を氏名の昇順で並べ替えをしようとしてもできません。 ちなみにデータタブでカーソルをC列に置き、昇順ボタンを押しても、飯田が1番に来、新井が25番目に来てしまう始末です。 また、並べ替えボタンで、並べ替えウイザードの最優先されるキーに氏名を選択し、並べ替えキーを値、順序を昇順にしてOKボタンを押しても結果は同じでした。 解決方法をご教示ください。

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

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

  • 【Excel VBA】並べ替え

    Excel2003を使用しています。 あるテキストファイルから必要なデータを抽出し、予めExcelで作成してある表に、抽出したデータをコピーするという作業をマクロで処理しています。 Excelの表は、A列→4桁の番号(数値)、C列→文字列、D列→数値で、A列の番号順(昇順)に表示されています。 抽出されたデータは、2行目以下に表示されるので、まず、A2セルに『0000』、C2セルとD2セルにそれぞれ該当のデータがコピーされ、以下、順番にコピーされます。このA2セル『0000』の行データをコピーされたデータの一番最後にもっていき、下記のように上方向へシフトさせたいのですが、このようなことはコードを追加することで可能でしょうか?    A列  C列  D列 2  0000  あ  100 3  1200  い  200 4  1500  う  300        ↓ 2  1200  い  200 3  1500  う  300 4  0000  あ  100 データ元のテキストファイルは、会社で使用しているシステムの機能を使って、テキストファイルにしたものです。このデータが昇順で表示されているので、こちらを並べ替えてマクロを実行すればいいかと思ったのですが、数値と文字列が混在しているので、Excelの表にコピーした後(数値と文字列の混在がなくなった後)に、上記のように並び替えることができればと思い、質問させていただきました。 よろしくお願いします。

  • エクセル 並べ替え 数字の文字列→漢字の文字列→空白セル の順にしたいです。

    いつも教えていただきありがとうございます。 【状況】 同じ列に以下のような文字列が並んでいます。 未回答 空白セル 20090208 20090210 未定 空白セル 20090101 【実現したいこと】 この時、 数字昇順(実際には日付) ↓ 文字列(未定、未回答) ↓ 空白セル の順に並べ替えをしたいです。 状況補足 ・全ての文字列はVLOOKUP関数の結果として表示されています。 ・この操作をマクロに組み込むことを考えています。 ・空白セルは目立たなければ他の記号などに置き換えても構いません。 上記内容可能でしょうか? お教えいただけましたら幸いです。 何卒よろしくお願いいたします。

  • ACCESSの並べ替え

    ACCESSで住所録を作っています。 データの並べ替えをしたいのです。 ただし昇順ではなく、「親戚」「ゴルフ」「その他」「会社」の順にしたいです。 以上4つのデータは「所属」フィールドに入力してあります。 なのでデザインクエリの「並べ替え」で「昇順」にすると 「会社(か)」「ゴルフ(ご)」「親戚(し)」「その他(そ)」の順になって さらに隣の「フリガナ」のところを「昇順」にすると それぞれの中で昇順になります。 さきほど書いた、「親戚」「ゴルフ」「その他」「会社」の順(自分の思う順番)に したいときはどのように設定すればよいのでしょうか? 教えてください。よろしくお願いいたします。

  • エクセル(マクロ含む)で、列の並べ替えはできますか?

    エクセル(マクロ含む)で、列の並べ替えはできますか? 例えば、 A1  B1  C1  D1  E1 名前  ナシ  カキ  蜜柑  モモ 価格  80  50  45  95 人気   3   4   2   1 個数  35  90  80  20 という表において、 価格、人気、個数、それぞれの指標をもとに、 B1~E1までの列を、降順・昇順に並べ替えたりしたいのですが、 そんなことは可能でしょうか? 例えば、人気の指標で、降順に並べ替えるとすると、 E列(モモ列)がB列に来て、以下同様に、 D列(蜜柑列)がC列に、 B列(ナシ列)がC列に、 C列(カキ列)がE列に来るような形で、並べ替えが行われます。 並べ替えが行われるのは、あくまで、「列」において、です。 よく見かける「『行』が移動するような並べ替え」とは異なるものですので、 誤解無きよう、宜しくお願い致します。 以上、どなたか、お分かりになるかた、色々とお教示下さい。 必ず、お返事とポイント付与を行います。

  • エクセル住所録の並べ替え

    エクセルで作成してある住所録の最後の行に、新規登録をしましたが、あいうえお順で昇順の並べ替えは出来るでしょうか、「ふりがな」は書いてあります。

専門家に質問してみよう