• ベストアンサー

エクセルで漢字がうまく並び替えソートができません。

それぞれ別のシートにあった来場者一覧500名程度を青色と顧客名簿1000名程度赤色を一緒の列にし、会社名の株式会社や(株)などを削除し並び替えをし、青赤並んだところをチェックし顧客がどれだけ来場したか見たいのですが、アルファベットやカタカナはうまく並び替えでき、なぜか顧客名簿の漢字が後ろに溜まって赤色のリストが後ろに続きます。しかし青色と赤色にした。”浦和”から始まる文字など は本来上下に並んで良いはずですが、片方ははるかに上の方もう片方ははるかに下に並びます。シートはすべて文字列で文字のフォントやサイズも合わせていますがなぜうまく並びかわらないのでしょうか?教えてください。もちろん”浦和”以外の漢字も多数うまく並びかわっていません。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.7

#6お礼について。 大阪市 2091E58DE38E73 大阪市 91E58DE38E73 が現実にあるなら、上のほうは半角スペース(20)が先頭に入っていて下は入っていません。(半角スペースはコードが32番目16×2+0で16進で20に設定されています。) したがって2と9を比べた段階で下の方が後の方にくることが判ります。 上の方の先頭の半角スペースを取り去らないといけません。 上記が本当なら、私の私製関数が役だったわけです。他に納得がいかないのがあれば、それら2つも、#6の関数をかけて、調べて見て下さい。

その他の回答 (6)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

#5です。もしソートキーがセットされている列があるなら(C列と仮にするとして)、その列を対象にして、別の空き列に、=mojihex(C1)と入れて、下方向に+ハンドルを引っ張って見てください。 その前段階として、ツール-マクロ-VBE-挿入-標準モジュールで出てくる画面に下記のコードをコピー貼りつけしておいて下さい Function mojihex(a) s = "" For i = 1 To Len(a) b = Mid(a, i, 1) s = s & Hex(Asc(b)) Next i mojihex = s End Function (例) 大阪市 91E58DE38E73 12大阪市 313291E58DE38E73 大阪市 2091E58DE38E73 の右列ような文字が現れるが(値を16進表示したもの)、半角文字は2文字に、全角文字1字は4文字で表されることを念頭において見ると、「同じ」とか、「近いはず」と思っている2行について、離れてしまう、「違い」が判るかもしれない。

macpm8600
質問者

お礼

ありがとうございます。赤と青と表現したのは背景バックの色で文字は黒色です。これはあまり関係ないのですね。 ちなみに全く同じに見える2つの大阪市の違いはなんですか?やはり読み方なのでしょうか。 大阪市 2091E58DE38E73 大阪市 91E58DE38E73

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

>青、赤と言うのは文字(フォント)色ですか 並べ替えは、書式(フォントサイズ・色・字体)などを考慮しないはずです。 飽くまで並べ替えの勝ちか負けか(前に来るか後かは)データの値(文字のビット配列の大小)を対象にします。全角・半角は文字コードが違うので、またカタカナ、ひらがなもコードが違いますので、別の場所に並びます。 英字の大文字小文字もコード(ビット配列)が違います。 >シートはすべて文字列で文字のフォントやサイズも合わせていますがなぜうまく・・ 関係ないと思います。 「ひとつのフィールド(列)には同じ書式を使ってないと並べ替えできません。」とおっしゃっていますが、正しいですかね? >漢字がうまく並び替えソートができません。 そもそも漢字順でソートして、人間にとって意味がある並び順に成りません。それは判っておられると思いますので、改まって質問する表現としては不適当です。 通常はフリガナ(エクセルのフリガナでは無く、直接入力のフリガナ)を入力し、それでソートしないと行けません。勿論カタカナ上でも、会社組織名などは省いた方がよくスペースの有無や数もルールを作り規制しないとなりません。全角半角も統一しないとなりません。 アルファベットの全角・大文字。小文字と読みもルールを 設けないと成りません(うとヴなど)。 数字も読みをどうするか、漢字の読みも難しい(ニホンやニッポンなどや読みがバラバラになる惧れは多い)のはご存知のとおり。 またカタカナ半角の場合、濁点の扱いも難しいものです。 考えが両方成り立つので。 ●今までもエクセルのソートの質問(並び順が旨く行かない)が時々ありますが、実例などを上げた質問者は(少)なく、言葉だけの説明で、回答候補者は、データが見えないので、適切な回答を上げ難いですが、実際見れば、単純な理由指摘で終わるはずです。ソートの原理は単一なんですから。 ただエクセルでは、「並べ替えオプション」で、曜日順などの、ひと仕掛けしたものもあるので、その場合も仕掛けをした後は、単純なソートの原理で処理されるはずです。16進表示が出来るエヂタでもあれば、引っ付くはずが、離れてしまう2者を表示すれば一発で判ります。 先頭に近いところでの差が大きくソート後の出現場所を左右します。先頭のスペースなどは特に気をつけましょう。 エクセルのフリガナ機能の利用は便利ではありますが鵜呑みは危険です。 実例をコピーして挙げてください。

回答No.4

D-majinさんの回答の補足になると思います。 漢字名のふりがなを表示するには、[書式]→[ふりがな]→[表示/非表示]とし、編集するには、[書式]→[ふりがな]→[編集]としますが、1000件以上のデータとなるとこの操作はとても面倒ですよね。 しかも、このふりがなデータは、コピー&貼付けで、簡単に消えてしまいますから、あまりあてにできません。 そこで、一覧名を表示している列の隣にカナ列を追加し、こちらのデータで並び替えをすることをお薦めします。と言っても、やはり1000件以上のデータを打ち直すのは手間なので、関数を少し使って、少しは楽をしましょう。 1.追加したセル列に =PHONETIC(参照セル) を入力します。これで、現在登録されているふりがなの一覧が完成しました。 2.追加した列を コピー → 形式を選択して貼付け で、値にチェックを入れて、貼り付けます。これで、関数はすべて消え、仮ふりがな列ができました。 3.ふりがなの間違っている箇所を修正し、完成です。

macpm8600
質問者

お礼

ありがとうございます。コピーペーストの時に値貼付けにすれば読み方のデータは消えるのですね。ありがとうございました。なんかその方法が一番簡単そうですね。漢字コード順にならんでしまうのかもしれませんが・・(^^)

  • goomika
  • ベストアンサー率26% (66/251)
回答No.3

Excelでデータベース機能を使う場合、 いくつかの決まりごとがあります。 青色、赤色ってのは、フォントの色ですよねぇ? ひとつのフィールド(列)には同じ書式を 使ってないと並べ替えできません。 フォントやサイズは同じにされてるようですが、 色が違うとだめって事です。

回答No.2

アドレス帳の整列が上手く行かないのも同じで、ふりがなを入力すると期待通りに並びません。エクセルの場合も同じ現象と思われます。

noname#7095
noname#7095
回答No.1

そのリストの片方がどこか別のデータベースから貼り付けたものでは? 入力した文字に振り仮名情報が存在するものとしないものとが混在する場合に見られる症状のようです。 [データ]-[並び替え]-[オプション]で[振り仮名を使用しない]にチェックをいれることで文字コード順に並び替えをさせることができるようになると思われます。 が、読み仮名情報がないと50音順には並び替えできないようです。

関連するQ&A

  • エクセルで2つの表を見比べる

    上手く表現出来ずに変なタイトルになってしまいました… sheet1に顧客全員の名簿があるとします B列には顧客の氏名、C列には会員のランク(3種類のランク分けがしてあります) という名簿です。 sheet2にはある商品を購入した購入者名簿があります。 D列に顧客の氏名、その他の列には住所などが入力してあります。 (順番は購入日順なので、バラバラです。) sheet2の購入者名簿に名前のある顧客の氏名を sheet1の顧客全員の名簿から探し、C列の会員ランクを 『上得意』と変えたいのですが関数などを使って 簡単に出来る方法ってありますか? 会員数が6000名、商品購入者が200名くらいと 数が多いので1件1件検索すると時間がかかります… VLOOKUP関数なんかで出来たかなと思ったんですけど 勉強したのがだいぶ前なのですっかり忘れてしまいました。 詳しい方、ぜひいい方法を教えてください。

  • Excelのセル内の文字列の文字色変更について

    申し訳ございません、どなたか教えていただけないでしょうか。 エクセルのセル内の文字列を、ある特定の文字列の時に文字色を変えたい。 例えば、赤、青、黄、桃、緑という文字列をセルの中に入れた時、 その文字の色がそれぞれ、 「赤」の時:赤色の文字色 「青」の時:青色の文字色 「黄」の時:黄色の文字色 「桃」の時:桃色の文字色 「緑」の時:緑色の文字色 というように自動的に設定をしたいのです。 条件付き書式では、3種類までならできますが、4種類以上だとダメですよね。 できればマクロではなく、セルの書式設定「ユーザー定義」で設定したいのですが、 公式はございますでしょうか。 数値によって色を変更する方法は、いろいろなサイトで確認しましたが、 文字列で色を変えるという方法がなかったもので質問をいたしました。 よろしくお願いいたします。

  • エクセルの突き合わせ方法について

    同じシート内でC列にあるキーワードを[A列]と[B列]から検索して、結果を[D列]に返す。完全一致は’○’、一部一致は’△’、見つからない場合は’×’とする。 また、結果文字を色分け(検索キーワード含め)できると助かります。 ’○’は青、’△’は黄色、’×’は赤色。 よろしくお願いいたします。 <条件> ・[A列]は[C列]から検索したい一部のキーワード。見つかれば’△’ ・[B列]は[C列]と完全に一致した場合のみ’○’ ・[B列]の一部が[C列]に見つかっても’×’ ・[B列]と[C列]が完全一致すれば、その一部は必ず[A列]に存在する  が結果は’○’で返す。 <具体例1> [A列]  [B列]     [C列] [D列] 111(赤) 222AAA(青)  222AAA ○(青)    222(黄) 110AAC(青)  999AAC ×(赤) 333(赤) 111aaa(赤)  110AAC ○(青) 444(赤) 112bbb(赤)  110zzz ×(赤) 555(赤) 113ccc(赤)  222yyy △(黄)

  • エクセル2003 入力した数値に従って同行複数列のセルの書式を変えたい

    スポーツクラブで名簿を作成しています。 C列には会員番号、D列には学年、E列には氏名、F列にはフリガナ、 G列には級(文字列)が入力してあり、H列にはG列の級に応じた 1~30の数値を入力しています。 このH列の数値を幾つかのブロックに分けて、ブロックごとに指定 した色で同行のC~G列を着色したいのです。 例:H列の数値が1~5は赤色、6~10は青色と指定した場合 H5が数値2のとき → C5~G5は赤色 H6が数値9のとき → C6~G5は青色 関数や入力規則を使用して上記のような書式を設定することは 可能でしょうか?その他の方法でも結構ですのでご教示宜しく お願い致します。

  • Excelの塗りつぶしで色を変えたい

    Excelで作成した一つのワークシートを「全てのセルを選択」し、「塗りつぶし」で色をつけたとします(例えば赤色)。そうした場合、その後空いているセルに文字を入力するとその文字は当然赤色になりますが、これを黒で入力する方法はないのでしょうか。

  • エクセルのシート名を、シート1に作成した新旧一覧表に対応させる形で、複数シート一括で変更するには?

    エクセルのシート名の変更について教えてください。 シート1のA列に、現在のブックのシート名が、 シート1のB列には、変更したいシート名が 対応するように入力されています。 シート数は50~200程度で、つど変わります。 例     A列    B列 1行目:りんご   赤色  2行目:ばなな   黄色 3行目:メロン   緑色     ・     ・     ・     ・     ・     ・ ※この場合、「りんご」は「赤色」に、「ばなな」は「黄色」に、 「メロン」は「緑色」に、それぞれシート名を変換したい。 今は、手作業でひとつずつシート名を変換しており、 かなりの手間で困っています。 一覧表を作成するまでは手作業でいいのですが、 何とかして、シート名の変更を、この一覧表を参照して できないでしょうか? 過去の質問をいろいろと見たのですが、 該当するものが見つけられず、VBAも初心者のため、 途方にくれています。 ぜひともご教授ください。

  • エクセルの複数項目をソートするには?

    すみませんが教えて頂けませんか 現在勤めている会社のデータなのですが、 セルのA列(顧客番号:数字のみ)と B列(顧客名:漢字仮名まじり)にあるデータを元として I列とJ列にある項目をA列とB列と全く同じ並びに ソートさせてそれに付随している売り上げの数字が 入力されているK列とL列とM列も I列とJ列に連動して一緒にソートする方法は無いでしょうか? どうぞ宜しくお願いします

  • 漢字を含む文字列のソート

    皆さん、教えてください。 perlで漢字を含む文字列(名前)のソートを行おうと思ったのですが、 perlはコードでのソートらしいので、実際には思うような結果が得られませんでした。 厳密にできなくてもかまわないので、ある程度正しいソートの方法を教えて頂けませんでしょうか。 もしくはライブラリなどあれば、教えて頂けませんでしょうか。 以上、よろしくお願いします。

    • ベストアンサー
    • Perl
  • エクセルの再計算

    再計算で処理スピードがかなり遅くなってしまいました。 シート1のA列に顧客番号B列に顧客氏名を入力しています。現在58000名が入力されております。これからも月に100名程度増加していきます。 シート2にシート1を反映させています。 シート2のA列に今日の日付を入力しB列に顧客番号を打ち込むとC列にシート1の氏名が表示されます。 しかし数が多いもので番号を打ち込みエンターキーを押すと再計算が始まり能率が上がりません。 このような状態を回避する方法がありましたなら教えていただきたいのですが。

  • エクセルで組み合わせの関数?を作る方法

    エクセルで組み合わせの関数か式?を作る方法を教えてください。 下のように、A列のセルに一文字の漢字とB列のセルに一文字の漢字を組み合わせて C列の一つのセルに2文字の漢字を表示させ、その後全て列挙していく方法はあるでしょうか? C列の一つのセルに2文字が不可能なら、C列にAの漢字、D列にBの漢字、という形でも結構です。 よろしくお願いします。 A- B- C 山- 青- 山青 川- 黄- 山黄 海- 赤- 山赤 空- 白- 山白 天- 黒- 山黒 地- 金- 山金 火- 緑- 山緑 水- 紫- 山紫 --川青 --川黄 --川赤 --以下同様に組み合わせを表示させていく ここでは下書き作成中での「スペース」が反映されないので意図的に列と列の仕切の意味でハイフンを入れていますが無視してください。

専門家に質問してみよう