プロが教えるわが家の防犯対策術!

121
124
124-5
121-1
121-3
123-2
123
を昇順で
121
121-1
121-3
123
123-2
124
124-5
と並べ変えたいのですが
数値を文字列にしても
次のように枝番なしと枝番で分かれてしまいます
121
123
124
121-1
121-3
123-2
124-5
中ほどのように並べ変える方法がありますか?
ご教授ください

A 回答 (8件)

>数値を文字列にしても


次のように枝番なしと枝番で分かれてしまいます

セルの書式設定で「文字列」を選択しても、数字データは「数値」のままですので、ご質問のような状況になります。

数字データを本当に文字列データにして並べ替えたいなら(文字コード順に並べ替えてもよいなら)、その列を選択して「データ」「区切り位置」で「次へ」「次へ」でウィザードの3/3で「文字列」にチェックを入れて「完了」してから、並べ替えを行ってみてください。
    • good
    • 3

 今仮に、枝番の桁数が最大でも(仮に)3桁までしかなく、元の番号がA列に存在していて、C列を作業列として使用して、E列に昇順に並べ替えた結果を表示するものとします。



 まず、C1セルに次の関数を入力して下さい。

=IF(ISNUMBER(1/SUBSTITUTE(INDEX($A:$A,ROW()),"-",)),LEFT(INDEX($A:$A,ROW()),FIND("-",INDEX($A:$A,ROW())&"-")-1)*10^3+REPLACE(INDEX($A:$A,ROW())&".0",1,FIND("-",INDEX($A:$A,ROW())&"-"),),"")

 次に、C1セルをコピーして、C2以下に貼り付けて下さい。
 次に、E1セルに次の関数を入力して下さい。

=IF(ROWS(E$1:E1)>COUNT($C:$C),"",INDEX($A:$A,MATCH(SMALL($C:$C,ROWS(E$1:E1)),$C:$C,0)))

 次に、E1セルをコピーして、E2以下に貼り付けて下さい。

 以上です。

 尚、枝番の最大桁数が4桁の場合には、C1セルに入力する関数中の「*10^」と記されている箇所の後に続く数値を4に修正し、枝番の最大桁数が5桁の場合には5に修正して下さい。(枝番の最大桁数よりも、「*10^」の後に続く数値の方が大きい場合は、修正する必要はありません)
「Excel2007 並べ変え 数値と枝番」の回答画像7
    • good
    • 0

>数値を文字列にしても



方向はそれでイイのですが,やり方が間違ってます。


手順:
数字を縦一列選択する
データメニュー(データタブ)の区切り位置を開始する
特に指定せず次々送り,3/3画面で「文字列」をマークしてOKする
改めて昇順で並べ替える。

と,出来ます。
セルの書式設定を文字列にしただけでは,あなたが失敗した通り,出来ません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
お教えいただいた方法では、やはりハイフンは別になってしまいます。
どこかやり方が違うのかも

ハイフンを小数点に置換する方法でうまくいきました。

お礼日時:2012/09/19 17:41

枝番は結構イヤラシイィ、なのであまりカタイコトいわなければ、これで十分では??


チョイと計算列を拝借!
どこでもエエですが、
E2:
=SUBSTITUTE(A2,"-",".")*1
以下、コピー
小数点数値にしたつもりなんで、一応書式は数値でお願ぇシヤス!(標準でイィのかも?)
これをキーにしてソートしてくだせぇ~!!
    • good
    • 0

回答No3です。


121-13などのような‐の後に二桁以上の数値が有る場合には先ほどのB1セルへの入力の式では対応ができません。
次の式をB1セルには入力してください。

=IF(A1="","",IF(COUNTIF(A1,"*-*"),LEFT(A1,FIND("-",A1)-1)*1000+MID(A1,FIND("-",A1)+1,3),A1*1000))

上記の式では‐の後の数値が三桁の数値まで対応することができます。
なお、その他の操作は回答3と同じにします。
    • good
    • 0

次のようにすればよいでしょう。


作業列を作って対応します。
例えばお示しのデータがA1エルから下方にあるとしてB1セルには次の式を入力して下方にドラッグコピーします。

=IF(A1="","",IF(COUNTIF(A1,"*-*"),SUBSTITUTE(A1,"-",".")*1,A1))

C1セルには次の式を入力して下方にドラッグコピーします。

=IF(B1="","",INDEX(A:A,MATCH(SMALL(B:B,ROW()),B:B,0)))

最後にC列を選択して右クリックして「コピー」し、その後にA1セルを選択して右クリックし「形式を選択して貼り付け」で「値」にチェックをして貼り付けます。その後にB列やC列を選択して削除します。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
-を小数点に置換する方法がうまくいきました。

お礼日時:2012/09/19 17:51

ハイフンを削除して並べ替えでは、



A2セルから下にデータがあるとして、B2セルに、以下の式を入れて下にドラッグコピー、
=SUBSTITUTE(A2,"-","")

B列で並べ替えでいかがでしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
なんかうまくいきません。

-を小数点に置換する方法がうまく行きました

お礼日時:2012/09/19 17:48

こんにちは!


枝番が付いていない番号は当然のコトながら、重複はない!という前提で・・・
データはA列の1行目からあるとします。

どこか使っていない列の1行目セルに
=IF(ISNUMBER(FIND("-",A1)),A1,A1&"-"&0)
という数式を入れA列最終行までオートフィルでコピー!

このままその列をキーとして並び替えをしても全く変化しませんので
数式が入った列すべてを範囲指定 → 右クリック → コピー → 同じ列をそのまま指定 → 
右クリック → 「形式を選択して貼り付け」 → 「値」を選択しOK

そしてこの列をキーとして昇順で並び替えを行います。
最後に数式が入った列すべてを削除して完了!

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
試行して見ましたが若干手数がかかりますね。
-を小数点に置換する方法がうまく行きそうです

お礼日時:2012/09/19 17:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!