• ベストアンサー

Excel文字の並び替えについて。

例えばA1に「10-1-5」とハイフンで区切られた文字があります。 これをB1に数字が小さい順「1-5-10」と並び替えて表示することは可能でしょうか。 数字は一桁か二桁までです。 よろしくお願いしますm(_ _ )m

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

  • ベストアンサー
noname#204879
noname#204879
回答No.1

添付図参照 B1: =FIND("-",A1) C1: =FIND("-",A1,B1+1) D1: =LEFT(A1,B1-1)+0 E1: =MID(A1,B1+1,C1-B1-1)+0 F1: =MID(A1,C1+1,9)+0 G1: =SMALL(D1:F1,1) H1: =SMALL(D1:F1,2) I1: =SMALL(D1:F1,3) J1: =G1&"-"&H1&"-"&I1

mzakom
質問者

お礼

丁寧に画像まで添付して頂きありがとうございます。 作業列を作った方がわかりやすいですねm(_ _ )m

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

A1セルから例えばA10セルまでにお示しのようなデータが有るとします。 作業列を作って対応することがよいでしょう。 初めにA1セルからA10セルを選択したのちに「データ」タブから「区切り位置」をクリックします。 最初の画面はそのままで「次へ」、次の画面では区切り文字の項で「その他」にチェックを入れて、その窓に - を入力しOKします。次の画面で表示先の窓には$A$1となっていますが、それを$E$1に書き換えて完了します。 A列の文字列に含まれる数値がE,F,G列に表示されます。 その後にB1セルに次の式を入力して下方にドラッグコピーします。 =IF(A1="","",SMALL(E1:G1,1)&"-"&SMALL(E1:G1,2)&"-"&SMALL(E1:G1,3))

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

ユーザ定義関数は如何でしょうか。 仮に関数は=mysort(A1)とします。(桁数は10桁、個数はほぼ無制限です) エクセル任意シート上でAlt+F11(VBE起動)→挿入→標準モジュール→サンプルコード貼り付けてお試しください。 Function mysort(rng) Dim wk, swap As Long, i As Long, j As Long wk = Split(rng, "-") For i = 0 To UBound(wk) For j = UBound(wk) To i Step -1 If wk(i) * 1 > wk(j) * 1 Then swap = wk(i) wk(i) = wk(j) wk(j) = swap End If Next j Next i mysort = Join(wk, "-") End Function

関連するQ&A