• 締切済み

文字列を数値としてソートするには

こんにちは。 "."区切りで数値が並ぶ列を、次のようにソートしたいのですが、何か良い方法はありませんか。 1 1.1 1.1.1 1.2 1.2.1 1.10 1.10.1 1.10.2 1.10.10 これを普通にソートすると、2より10が先にきてしまいます。 1 1.1 1.1.1 1.10 1.10.1 1.10.10 1.10.2 1.2 1.2.1 よろしくお願いします。

みんなの回答

  • ka_na_de
  • ベストアンサー率56% (162/286)
回答No.3

すみません。記入ミスです。 <誤り> 3)E1セルに =IF(B2="",0,B2) と入力し、E1~G10にコピー&ペースト <正解> 3)E1セルに =IF(B1="",0,B1) と入力し、E1~G10にコピー&ペースト

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

参考までに一案を示します。 前提:A列に上記のデータが文字列で入力されている。 1)B列にA列をコピー&ペースト 2)B列を選択し、上部メニューから「データ」→「区切り位置」を選択  「カンマやタブなどの・・・・」にチェックを入れて「次へ」  「その他」にチェックを入れて左の欄に「.」を入力し「完了」 3)E1セルに =IF(B2="",0,B2) と入力し、E1~G10にコピー&ペースト 4)A~G列を選択し、「データ」→「並べ替え」を選択   「最優先されるキー」を「E列」にして「昇順」   「2番目に優先」を「F列」にして「昇順」   「3番目に優先」を「G列」にして「昇順」   「OK」 5)B~G列削除 

noname#244834
質問者

お礼

ka_na_deさん 回答ありがとうございます。 「区切り位置」でこのような変換が行えるのですね。 色々と試してみます。

全文を見る
すると、全ての回答が全文表示されます。
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

◆とりあえず例題はクリアします ◆作業列をB列に B1=--SUBSTITUTE(A1&".",".",":") ★下までコピー ★B列をキーに並べ替えをします

noname#244834
質問者

お礼

maron--5さん 回答ありがとうございます。 質問が曖昧だったため恐縮ですが、区切りはn階層になるので 教えていただいた方法ですと、制限があります。 ただ、この方法も便利なので、色々と試してみたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 文字列をソートする方法

    数値をソートする方法にはバブルソートやクイックソートなどがあり アルゴリズムは分かるのですが 文字列を五十音順にソートしたい場合にはどのようにしたら良いですか? 検索をかけてみたのですが、大抵プログラミング言語に備わったsortの方法が紹介されており 自分で処理を行う方法については書かれていません。 ExcelのSort機能を使わない方法で教えてください。

  • 12(数値)、15(標準)、’16(文字列)のエクセルソート

    12(数値)、15(標準)、’16(文字列)の様に、一見すると全て同じ数値データに見えるようなものが、100件程、羅列しています。ソートうまく出来ません。 (1)書式設定で、全てを「数値」に変えても「’」だけは消えず、「’」を「空欄」にするという置換は、エラー(データ一致しません)で出来ませんでした。今は、一個一個のデータを見て、手作業で「’」を消しています。 どうすれば、標準・数値・文字列の混在したデータをソートできるのでしょうか? どなたか分かる方、お教えください。

  • csv元データーの数字の列が、""で囲まれているせいか、数値としてのソートできません

    次の式でソートしたいのですが、 @LINES = sort { (split(/\,/,$a))[0] <=> (split(/\,/,$b))[0] } @LINES; csv元データーの数字の列が、 "28000000","鈴木", のように""で囲まれているせいか、<=>で数値としてのソートできません。 cmpで文字列としてのソートは出来ます。 どうしたら良いのでしょうか?

    • ベストアンサー
    • Perl
  • 文字列のソート

    タイトルの通りです。 例えば文字列 "adcb" を "abcd" に変換する方法を探しています。 str = "abcd".split(//).sort.join このように一度配列に置き換えてソートする 上記のコードでも問題なく動いていますが、 もっと簡潔に書ける方法はないのでしょうか? ご指導お願いします。

    • ベストアンサー
    • Ruby
  • 数値を含む文字列の並び替えについて

    $xxxx[0]='なんとかかんとか'."\t".'なんとかかんとか'."\t".'12345'."\t".'なんとかかんとか'; $xxxx[1]='うんたらかんたら'."\t".'うんたらかんたら'."\t".'12346'."\t".'うんたらかんたら'; … のように、数値がタブ区切りで中間に入った文字列が幾つかあります。 この文字列を数値の部分で比較し並び替えることは可能でしょうか? 数値の位置は固定、3番目です。 よろしくお願いします。

    • 締切済み
    • PHP
  • 2つの列を合わせてソートしたい。

    2つの列を合わせてソートしたい。 table名:test 【name】 【area】 【ground】 【bldg】  aaa    3    65.12   84.94  bbb    1    24.6    35.14  ccc    3    112.58  114.5  ddd    2    54     83.14  eee    4    89.25   41  fff     3    74.5    99.10 「ground」と「bldg」はfloat型で、整数と小数点の数値が入っています。 やりたいことは「ground」と「bldg」の2つの列で数値が大きい順でソートしたい。 SELECT * FROM `test` ORDER BY `ground` DESC,`bldg` DESC; こうすると、当たり前な話ですが、「ground」でソートされた後に「bldg」でソートされてしまいます。 そうではなくて、「ground」と「bldg」を合わせて、ソートしたいのです。 【求める実行結果】 【name】 【area】 【ground】 【bldg】  ccc    3    112.58  114.5  fff     3    74.5    99.10  eee    4    89.25   41  aaa    3    65.12   84.94  ddd    2    54     83.14  bbb    1    24.6    35.14 色々と試してみましたが、うまくいかず前に進まない状態です。 何かいい解決法をご存知の方がいらっしゃいましたらご教授お願い致します。

    • ベストアンサー
    • MySQL
  • 漢字を含む文字列のソート

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

    • ベストアンサー
    • Perl
  • TextBoxに入力された文字列のソート

    TextBoxに入力された文字列のソート TextBoxに入力された文字列のソート 開発環境:Visual Web Developer 2008 express 言語:Visual Basic TextBoxを縦5行横3列に並べた表形式の入力フォームがあり、1列目のTextBox(番号…1,4、7、10、13)に入力された文字列(数値)を基準に、昇順にソートし、行ごと入れ替えるプログラムを作りたいのですが、TextBoxを利用したソートの参考になるものが見つからず息詰まっています。どなたかサンプルや参考になるサイトがあれば、教えてください。 ###入力フォーム### 1  あああ あああ 3  ううう ううう 2  いいい いいい 5  おおお おおお 4  えええ えええ ###実際に出したい結果### 1  あああ あああ 2  いいい いいい 3  ううう ううう 4  えええ えええ 5  おおお おおお

  • Excelの数値でのソートについて

    1.2.3.4.5.6.7.8.9.10.11........100.101.102 というふうに番号が入力されている列があるのですが、これを上のような順番でソートすることはできませんか? 普通にソートすると1.10.100.1000.1001.1002.1003となってしまいます。

  • カンマ区切りの数値文字列を数値に変換

    JSPで数値を入力して、データベースへ更新するプログラムを作成しています。 入力はカンマありでもなしでも通すようにしたいと思っています。 しかも、カンマの位置は特にチェックせずにしたいのです。 ちゃんとしたカンマ区切り数値なら、NumberFormatで数値変換できますよね? データベースの数値を表示する際にもカンマ区切り数値にしますので、1桁目を削除した場合には、カンマの位置が違ってきますよね。 そのためにカンマの位置は意識しないでいきたいのです。 StringTokenizer という便利なクラスがあったので使用してみたのですが、インスタンスを生成した後、トークン分をループで回して文字列を連結する必要がありますよね。 もっとスマートに一発で変換できないでしょうか? 「ある文字列からデリミタを省いた文字列を返すメソッド」みたいな。 よろしくお願いします。

専門家に質問してみよう