• ベストアンサー

エクセルの関数について

たとえば、列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

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

=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)

francede
質問者

お礼

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

その他の回答 (4)

回答No.5

#3の補足です。 列A、列Bを結合して列Cをつくる =A1&IF(ISBLANK(B1),"","-"&B1) 説明:まずAはそのまま表示、Bに何もなければそれで終わり、Bが空セルじゃなければ"-"とBを表示。 文字の連結は、CONCATENATEでも&でもいいです。。。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

失敗の記。 漢字がある列は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列です。

回答No.3

甲+数字を別々のセル(セル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

francede
質問者

お礼

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

  • elmclose
  • ベストアンサー率31% (353/1104)
回答No.1

D1に次の数式を入れてみてください。 =VALUE(RIGHT(A1,LEN(A1)-1)) そして、これをD列の各セルにコピーしてください。 これは、つまり「甲」を分離して、数値のみを取り出しています。従って、D列をキーとして昇順に並べ替えを行なえば、甲の本番順に並べることができます。 甲が入っているものと入っていないものとが混在している場合や、甲のほかに乙とか丙も入っている場合は、頭の一文字によって場合わけする(=if()を用いる)などして、所望の順序を得ることができます。 さらに質問があれば、書いてください。

francede
質問者

お礼

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

関連するQ&A