- ベストアンサー
エクセルで数列の上位桁のみ取り出し並べ替える
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
ん? >そしたら 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のように失敗します。
その他の回答 (7)
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
なんだかなぁ。。。 エクセルで数列の上位桁のみ取り出し並べ替える 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冊を探して、熟読することをお勧めします
補足
ありがとうございます!! 私は普段エクセルを使うことはありませんし、この先もおそらくありません。 ですから質問させていただきました!! coal Tarさんの回答は、良かったですよ! 助かりました! ありがとうございます!!!!
- keithin
- ベストアンサー率66% (5278/7941)
ん? それはあなたの8765が、Z列に記入されていないからですね。 んじゃ =SUM(SMALL(1*MID(Y617,ROW($AA$1:$AA$4),1),COLUMN(A617:D617))*POWER(10,4-COLUMN(A617:D617))) をコントロールキーとシフトキーを押しながらEnterで入力してみたらどうですか。 あるいは、わざわざセル結合するのをやめて、ご質問で掲示されている見た目通りZ列に数字を入れなおしてから、元の回答の式を使います。
補足
あ、なるほど、結合すると、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)
AA617に =SUM(SMALL(1*MID(Z617,ROW($AA$1:$AA$4),1),COLUMN(A617:D617))*POWER(10,4-COLUMN(A617:D617))) と記入し、必ずコントロールキーとシフトキーを押しながらEnterで入力、以下コピーしておきます。 #この程度の配列数式は、計算負荷になることは100%ありません。
補足
ありがとうございます。 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)
例えば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)) 配列数式などを使いますとデータ数が多くなれば計算に負担がかかります。作業列などを設けて簡単な関数を使って処理することがよいでしょう。
お礼
失礼しました。 行番号は 617から622セルまでです。
補足
ご回答ありがとうございます。 オートフィルがセル結合の関係で出来なかったので、ひとつずつ入力してみました。 行番号が 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)
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)
8756を 5678としたいのであれば 8756と一つのセルに切り出すのではなく ”8”、”7”、”6”、”5”と別々の列に切り出した後に small関数で並べ替えます。
- kybo
- ベストアンサー率53% (349/647)
SMALL関数でいいです。Z2:Z7の範囲にデータがある場合、以下の様にしてみて下さい。 =SMALL($Z$2:$Z$7,ROW(Z1))
お礼
度々のご回答ありがとうございます。 Ctrl+ENTERで求める答えが出ました。 ありがとうございました!!
補足
なるほど、そうなんですね。 普通の関数はただ関数を入れれば良いだけですよね? ですから、コントロール+シフトが必要か必要でないか理解できませんでした。 なるほど、この場合必要なんですね、どういった場合に必要なんだろ?