- ベストアンサー
エクセルで数列の上位桁のみ取り出し並べ替える
エクセルで A1セルに 43782615 とあるとします。 それの上位4桁 4378 をB1セルに取り出し その後 C1セルに 若い順番 2378 に並べ替えて表示するにはどうしたら良いでしょうか? あと 5桁、6桁を取り出す方法も教えていただきたいです。 ちなみに、関数のみで実現したいです。 詳しい方、よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
A列にデータが有るとしてB1セルには次の式を入力して下方にドラッグコピーします。 =IF(A1="","",LEFT(A1,4)*1) 4ケタを取り出すのでLEFT関数の引数を4にしています。5ケタでしたら引数を5としてLEFT(A1,5)のようにします。 なお、LEFT関数で取り出した数字は文字列として取り出されますので数値に変換するために1を掛けています。 C1セルには次の式を入力して下方にドラッグコピーします。 =IF(A1="","",SMALL(B:B,ROW(A1))) 上の式では数値が小さい方から大きい方に並びます。 反対にする場合には次の式になります。 =IF(A1="","",LARGE(B:B,ROW(A1)))
その他の回答 (4)
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
値のrank付け後に関連するセルの数値を1セル内に http://okwave.jp/qa/q7822154.html で同じようなこと行っている。 =SUMPRODUCT(SMALL(MID(A1,{1,2,3,4},1)*1,{1,2,3,4}),10^{3,2,1,0}) 解説がNo.3のmike_gさんの回答 なぜ、同じ質問をする? エクセルで数列の上位桁のみ取り出し並べ替える http://okwave.jp/qa/q7824129.html
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答No2です。 2問目が勘違いをしていました。 C1セルに表示させるためには作業列を4ケタの場合でしたらD列からG列に作ります。 D1セルには次の式を入力してG1ですまでドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(LEN($B1)<>4,"",MID($B1,COLUMN(A1),1)*1) その後にC1セルには次の式を入力して下方にドラッグコピーします。 =IF(LEN(B1)<>4,"",SMALL(D1:J1,1)&SMALL(D1:J1,2)&SMALL(D1:J1,3)&SMALL(D1:J1,4)) これで数値に0が含まれている場合での、1が4つ並ぶ場合でも正しく表示されます。
補足
再度のご回答ありがとうございます。 追加で画像を添付する方法が解らなかったので、新たに質問をさせて頂きました。 お手数かと思いますが、よろしければお願いいたします。 http://oshiete.goo.ne.jp/qa/7824129.html
- Turbo415
- ベストアンサー率26% (2631/9774)
取り出すのは B1に=LEFT(A1,4)です最後の数字は桁数ですから変えればどんな桁数でもOKです。 ちなみに右からなら=right(A1,○)で右から○桁抽出です。 =MID(A1,2,3)だと左から2桁目から3つ抽出を意味します。 並べ替えは、よく分かりません。 もしかすると、関数では出来ないかもしれません。
お礼
ご回答ありがとうございます。 関数を知っていればいろんな事が出来ますね。 このシート以外は使うことがないので教えていただいて助かります。
補足
早速の回答ありがとうございます! =IF(A1="","",LEFT(U45,4)*1) でやってみました、お見事出来ました。 17468523 が 1746 に。 それで、並べ替えの部分ですが、上記の様に U45セルを参照していますので数式を次のように変えました。 =IF(U45="","",SMALL(B:B,ROW(U45))) そしたら一桁で 1 と出てしまいました。 これはどこがいけないんでしょうか?