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

たとえば、列Aに甲120または150列Bに500列Cに甲120-500と表示させているんですが、データを昇順に並べ替えるとき、甲が入っているとうまく並べかえることができません。甲120→甲1200→甲200→甲2000とういふうになってしまいます。これを解消する方法ありますか?または、いったん甲と数字をばらばらにして(その関数も教えてください)甲と本番と枝番を各々結合させることはできますか?(甲がない大字の分と枝番がない場合もあります)
よろしくお願いします。
列A  列B  列C
本番  枝番  地番
甲120  50   甲120-50
1500   25   1500-25
2540       2540
甲1352      甲1352

A 回答 (5件)

=IF(AND(LEN(A2),LEN(B2)),A2&"-"&B2,A2&B2)


で本番+枝番=地番にできます。

並べ替えを考えるなら1列追加
列A  列B  列C  列D
甲  本番  枝番  地番
甲  120   50  甲120-50
   1500   25  1500-25
   2540      2540
甲  1352      甲1352
の様にすればいいのでは?
こちらの場合は
=IF(AND(LEN(B2),LEN(C2)),A2&B2&"-"&C2,A2&B2&C2)
    • good
    • 0
この回答へのお礼

LEN関数とIF関数を組み合わせればいいのですね。参考にさせていただきます。ありがとうございました

お礼日時:2004/10/13 22:15

#3の補足です。


列A、列Bを結合して列Cをつくる

=A1&IF(ISBLANK(B1),"","-"&B1)

説明:まずAはそのまま表示、Bに何もなければそれで終わり、Bが空セルじゃなければ"-"とBを表示。
文字の連結は、CONCATENATEでも&でもいいです。。。
    • good
    • 0

失敗の記。


漢字がある列はA,C列で、B列は通常の数字ですね。
普通は甲123を桁を合わせて甲   123とか
甲0000123のようにデータをそろえてつくり、ソートするのです。やって見ました
(例データ)A列とB列
丙23455丙0023455
甲123甲0000123
甲1甲0000001
乙3456乙0003456
123455 0123455
1245 0001245
123 0000123
12 0000012
B列は
=IF(ISNUMBER(A1)," "&MID("0000000",1,7-LEN(A1))&A1,LEFT(A1,1)&MID("0000000",1,8-LEN(A1))&RIGHT(A1,LEN(A1)-1))
で出しました。スペースにするときは゛0000000゛をスペース7桁にすれば良い。
しかしこれをソートすると
12 0000012
123 0000123
1245 0001245
123455 0123455
乙3456乙0003456
甲1甲0000001
甲123甲0000123
丙23455丙0023455
となって、甲乙丙の順に並ばない。降順にしても同じ。
ですからこの順に並べたいなら、甲=1,乙=2、丙=3
と置換えた列をソートキー用の列として作らないといけない(注)。甲乙丙の3つならまだなんとかなるが、多くなると大変。それにしてもC列用にもう1列必要です。
このケースは面どくさい例ですね。
(注)1列に甲、乙、丙だけの列を作り、ソートのオプションの「甲、乙、丙、丁・・」を指定してソートする方法がある。これがベターかも。しかしA列で2列、C列で2列になってしまう。
なお上記B列はP付きの書体「以外」
を使って見てください。すっきり並びます。
(結論)
第1文字が数字出なければ、1文字だけある列にセットする。
残りを数字にするか、上記のように0かスペースを先頭部に埋めて桁ぞろえする列を作る。C列も同じ。
最後に下3桁でソートし上2桁でソートする。
A1+A2+B+C1+C2の5列です。
    • good
    • 0

甲+数字を別々のセル(セル1とセル2)に分ける


・セルが数字じゃなかったら、セル1に最初の文字、セル2には2文字目以降を入れる
・セルが数字だったら、セル1は空欄、セル2は数字を入れる
セル1 =IF(ISNUMBER(A1),"",LEFT(A1,1))
セル2 =IF(ISNUMBER(A1), A1, RIGHT(A1,LEN(A1)-1))

二つのセルをつなぐ
=A1&A2
    • good
    • 0
この回答へのお礼

IFとLENにCONCATENATE関数を組み合わせればいいのですか?

お礼日時:2004/10/13 22:17

D1に次の数式を入れてみてください。


=VALUE(RIGHT(A1,LEN(A1)-1))

そして、これをD列の各セルにコピーしてください。

これは、つまり「甲」を分離して、数値のみを取り出しています。従って、D列をキーとして昇順に並べ替えを行なえば、甲の本番順に並べることができます。

甲が入っているものと入っていないものとが混在している場合や、甲のほかに乙とか丙も入っている場合は、頭の一文字によって場合わけする(=if()を用いる)などして、所望の順序を得ることができます。

さらに質問があれば、書いてください。
    • good
    • 0
この回答へのお礼

VALUE関数とLEN関数の使用方法がいまいち分からなかったので、参考になりました。まだまだ関数初心者なので一から作ってみます。ありがとうございました

お礼日時:2004/10/13 22:14

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