- ベストアンサー
Excelで文字+数字のデータの並び替えについて
以下のような、文字と数字が混ざったデータの並び替えを行いたいのですが、 A3E A20 A100 A120 A250 MYYYYYY1K RAQQQ2A 下のようになってしまいます。 A100 A120 A20 A250 A3E MYYYYYY1K RAQQQ2A 何か良い方法はありませんでしょうか。 Excel2002を使用しています。 よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
VBAでやってみました。 文字+数字+文字の場合、文字部+数字部だけを考えているのでロジック的に完全ではないですが 標準モジュールに Sub test01() d = Range("A65536").End(xlUp).Row MsgBox d For i = 1 To d s = Cells(i, "A") m = "" n = "" nf = "n" For j = 1 To Len(s) x = Mid(s, j, 1) If IsNumeric(x) Then n = n & x nf = "y" Else If nf = "y" Then Else m = m & x End If End If Next j Cells(i, "B") = m Cells(i, "C") = Val(n) Next i End Sub を実行し、B列昇順、C列昇順で並べると A列 B列 C列 A3E A 3 A20 A 20 A100 A 100 A120 A 120 A250 A 250 MYYYYYY1K MYYYYYY 1 RAQQQ2A RAQQQ 2 になります。 第3の文字列の塊を、D列につくり、B-D列各々で昇順にすれば 完全になるように思うが、質問の仕様に書いてなくて、きりがないので略。
その他の回答 (6)
[No.2回答に対する補足]に対するコメント、 「上の方が期待する並び順」? A3E A20 A100 A120 A250 MYYYYYY1K RAQQQ2A の1、2行目は、なぜ A3E が上で、A20 なのですか?この並び順は降順に見えます、他は昇順なのに。
補足
ありがとうございます。 例もわかりにくいのかもしれませんが、 文字と数字 の後に文字がくる場合もあるのですが、 文字と数字だけの場合もあります。 Aの次の3を数値の最小として認識できないかと思い、 質問させていただきました。 以下のような一桁の数字が最小になるようにソートして欲しいのですが、 A3 A3E A3moji A20 A100 実際は、 A100 A20 A3 A3E A3moji のように、されてしまう為、何か良い方法があればと思いまして・・・。
- mshr1962
- ベストアンサー率39% (7417/18945)
文字型の宿命ですね。 A20をA100より前にしたいなら文字と数字は別のセルにするか A20をA020のようにするしかありません。 数字だけなら文字列でもEXCEL2002以降に限り、対応できますけど... http://office.microsoft.com/ja-jp/assistance/HP030542801041.aspx
補足
ありがとうございます。 やはり一手間加えないと厳しそうですね。 品名な為、文字数も固定していないので、 昇順並び替えの後、マニュアルで調整するしかないかとも思っています。
- keirika
- ベストアンサー率42% (279/658)
文字+数字がA列に入っているとします。B列に並べたい順番に番号を振っていきます。 B列の番号が入っているセルの選択して、A→ZボタンかZ→Aボタンを押すと番号の小さい順番か大きい順番に並びます
補足
ありがとうございます。 強制的に並び替えするにはそういう方法を取った方が早いのかもしれませんね。 ただこれから月ごとにリスト(新製品)を追加していく作業があり、既存のものとの並び替えをまたやり直すことになるため、並び順の番号の振り直しがまた発生します。これを何とか避けられないものかと。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
エイサンイーの次がエイニゼロで次がエイイチゼロゼロだから普通 に逆順かと思ったら、その次がエイイチニゼロですか… Excelは、文字列の一部を数値として処理することは出来ません。文 字列は全体で文字列なんです。お望みの並び方にするには、コード の付け方をA003E, A020, A100のように桁を揃えてしまうか、数字の 部分を数値としてソートするような複雑な処理をユーザー関数とし て定義してみるしかないでしょう。
補足
ありがとうございます。 品名の並び替えになるのですが、特殊な品名が多い為、 困っています。 A3 A3moji A20 A100 と続いたと思ったら、 Japan Tokyo1 Japan Osaka2 のような単語(数字が入ったりなかったり)の品名があったりして、どうしたら良いものか・・・。
期待と異なる結果は分かりましたが、念のために、貴方の期待する結果をお示しください。
補足
わかりにくくてすみません。上の方が期待する並び順です。
- chibita_papa
- ベストアンサー率60% (127/209)
どのような並び替えを期待しているのでしょうか。
補足
わかりにくくてすみません。上の方が期待する並び順です。
お礼
どうもありがとうございました。補足については、自己解決しました。
補足
遅くなって申し訳ありません。 ご回答のVBAの方を試してみた所、かなり希望通りの並び順になりました。どうもありがとうございます。 ただ、その中でデータをよく見てみると、文字列+数字+文字列+数字なども混在していまして、 例)A20 (Y170) のような場合、数字が20170となってしまうものがありました。 お手数おかけしますが、最初の文字列、数字のみを抽出し、文字列、数字という分割にするような方法はありませんでしょうか。 最初の文字列+数字が分割されると希望通りのものになると思え、再度申し訳ありませんが、教えていただけると助かります。