• ベストアンサー

エクセルで数列の上位桁のみ取り出し並べ替える

エクセルで画像の様な8桁の数値があります。 その上位4桁を抜きだし、右のセルに並べました。 そのセルのまた右側のセル(赤枠で囲った部分)にその4桁の数字を番号が若い順番に並べるにはどうしたらよいでしょうか? よろしくお願いいたします。 ちなみにオレンジの枠内は行です。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.7

ん? >そしたら 1000 と帰ってきたんですが、これはどういうことなんでしょうか? 一つ躓くと、もう他の事がすっかりアタマから抜けちゃいますね。 再掲: >=SUM(SMALL(1*MID(Y617,ROW($AA$1:$AA$4),1),COLUMN(A617:D617))*POWER(10,4-COLUMN(A617:D617))) >をコントロールキーとシフトキーを押しながらEnterで入力してみたらどうですか。 私も今回は(2度目なので)「必ず」と書きませんでしたが、『必ず』「コントロールキーとシフトキーを押しながらEnter」で入力しないと、1000のように失敗します。

gekikaraou
質問者

お礼

度々のご回答ありがとうございます。 Ctrl+ENTERで求める答えが出ました。 ありがとうございました!!

gekikaraou
質問者

補足

なるほど、そうなんですね。 普通の関数はただ関数を入れれば良いだけですよね? ですから、コントロール+シフトが必要か必要でないか理解できませんでした。 なるほど、この場合必要なんですね、どういった場合に必要なんだろ?

その他の回答 (7)

回答No.8

なんだかなぁ。。。 エクセルで数列の上位桁のみ取り出し並べ替える http://okwave.jp/qa/q7824020.html # 当方、Excelに博識なkeithinさんとほぼ同じ回答をしている まずは、質問できる知識と勉強、そして回答を理解する努力を怠っているように思えてなりません http://www.amazon.co.jp/s/ref=nb_sb_noss_1?__mk_ja_JP=%83J%83%5E%83J%83i&url=search-alias%3Dstripbooks&field-keywords=Excel 自分に合うような1冊を探して、熟読することをお勧めします

gekikaraou
質問者

補足

ありがとうございます!! 私は普段エクセルを使うことはありませんし、この先もおそらくありません。 ですから質問させていただきました!! coal Tarさんの回答は、良かったですよ! 助かりました! ありがとうございます!!!!

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.6

ん? それはあなたの8765が、Z列に記入されていないからですね。 んじゃ =SUM(SMALL(1*MID(Y617,ROW($AA$1:$AA$4),1),COLUMN(A617:D617))*POWER(10,4-COLUMN(A617:D617))) をコントロールキーとシフトキーを押しながらEnterで入力してみたらどうですか。 あるいは、わざわざセル結合するのをやめて、ご質問で掲示されている見た目通りZ列に数字を入れなおしてから、元の回答の式を使います。

gekikaraou
質問者

補足

あ、なるほど、結合すると、Z扱いじゃなくてYなのですね。 お手数おかけしました。 それでやってみました。 Y617セルに1234と表示されている状態で、 =SUM(SMALL(1*MID(Y617,ROW($AA$1:$AA$4),1),COLUMN(A617:D617))*POWER(10,4-COLUMN(A617:D617))) をAA617セルに入れてみました。 そしたら 1000 と帰ってきたんですが、これはどういうことなんでしょうか? よろしくお願いします。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.5

AA617に =SUM(SMALL(1*MID(Z617,ROW($AA$1:$AA$4),1),COLUMN(A617:D617))*POWER(10,4-COLUMN(A617:D617))) と記入し、必ずコントロールキーとシフトキーを押しながらEnterで入力、以下コピーしておきます。 #この程度の配列数式は、計算負荷になることは100%ありません。

gekikaraou
質問者

補足

ありがとうございます。 AA617セルに  =SUM(SMALL(1*MID(Z617,ROW($AA$1:$AA$4),1),COLUMN(A617:D617))*POWER(10,4-COLUMN(A617:D617)))  を入れてCtrl+SHIFT を押したまま ENTER を押してみましたが、#VALUE が帰ってきました。 これは、どうなったのでしょうか?

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

例えばZ2セルの数値を並べ替えてAA2セルに表示させるとしたらAB列からAE列に作業列を作って対応します。 AB2セルには次の式を入力してAE2セルまでドラッグコピーしたのちに下方向にもドラッグコピーします。 =IF($Z2="","",MID($Z2,COLUMN(A1),1)*1) その後にAA2セルには次の式を入力して下方にドラッグコピーします。 =IF(Z2="","",SMALL(AB2:AE2,1)&SMALL(AB2:AE2,2)&SMALL(AB2:AE2,3)&SMALL(AB2:AE2,4)) 配列数式などを使いますとデータ数が多くなれば計算に負担がかかります。作業列などを設けて簡単な関数を使って処理することがよいでしょう。

gekikaraou
質問者

お礼

失礼しました。 行番号は 617から622セルまでです。

gekikaraou
質問者

補足

ご回答ありがとうございます。 オートフィルがセル結合の関係で出来なかったので、ひとつずつ入力してみました。 行番号が 317から622まででしたので、 AB 617 セルに =IF($Y617="","",MID($Y617,COLUMN(A1),1)*1) AC 617 セルに =IF($Y617="","",MID($Y617,COLUMN(B1),1)*1) AD 617 セルに =IF($Y617="","",MID($Y617,COLUMN(C1),1)*1) AE 617 セルに =IF($Y617="","",MID($Y617,COLUMN(D1),1)*1) すると、セルが分割されて 8 7 1 6と表示されたのみでした 番号が若い順に、 1 6 7 8 と表示されねばなりません。 併せて、できれば1セル内に表示されるのがベストなのですが・・・。 どこが違ったのでしょうか? よろしくお願いいたします。

  • kybo
  • ベストアンサー率53% (349/647)
回答No.3

ANo.2さんが言っているようなことがしたいなら、 以下の様な数式を数式バーに入れ、CtrlキーとShiftキーを押しながらEnter =SUM(SMALL(VALUE(MID(Z2,ROW($Z$1:$Z$4),1)),ROW($Z$1:$Z$4))*10^(4-ROW($Z$1:$Z$4))) ※Z2のセルの場合。$Z$1:$Z$4は変更しないで使用して下さい。

  • shintaro-2
  • ベストアンサー率36% (2266/6245)
回答No.2

8756を  5678としたいのであれば  8756と一つのセルに切り出すのではなく  ”8”、”7”、”6”、”5”と別々の列に切り出した後に  small関数で並べ替えます。

  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

SMALL関数でいいです。Z2:Z7の範囲にデータがある場合、以下の様にしてみて下さい。 =SMALL($Z$2:$Z$7,ROW(Z1))

関連するQ&A

専門家に質問してみよう