- ベストアンサー
エクセルの関数を教えてください
よろしくお願いします。 6月1日 10(番) 6月1日 20 6月3日 10 6月6日 30 6月8日 10 6月9日 20 6月9日 30 と日付順で並んでいるものを 6月1日 10(番) 6月3日 10 6月8日 10 6月1日 20 6月9日 20 6月6日 30 6月9日 30 のように日付を無視して、10(番)から並べる方法を教えてください。 それぞれの日付左側に1.2.3.4.5.・・・日付はA、番号はBのセルに入力されている事とします。 説明がわかりづらくてすみません。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! No.1さんが回答されている方法が一番簡単だと思いますが、 タイトルが >エクセルの関数を教えてください というコトですので、関数でやってみました。 ↓の画像でD2(セルの表示形式は「日付」)に =IF(E2="","",INDEX(A$1:A$1000,SMALL(IF(B$1:B$1000=E2,ROW(A$1:A$1000)),COUNTIF(E$2:E2,E2)))) これは配列数式になりますので、Ctrl+Shift+Enterで確定! この画面からコピー&ペーストする場合は 上記数式をドラッグ&コピー → D2セルを選択 → 数式バー内に貼り付け → そのまま(編集かのうなまま) Ctrl+Shiftキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 E2セルには =IFERROR(SMALL(B:B,ROW(A1)),"") (配列数式ではありません) として、D2・E2セルを範囲指定 → E2セルのフィルハンドルで下へコピーすると 画像のような感じになります。m(_ _)m
その他の回答 (2)
- kybo
- ベストアンサー率53% (349/647)
補助列を使わずに、1つの式ですると、以下の様な感じかと思います。 A1:B7の範囲にデータがあるとします。 C1に以下の様に入力し、CtrlキーとShiftキーを押しながらEnterキーで確定。 =INDEX(A$1:A$7,SMALL(IF($B$1:$B$7=SMALL($B$1:$B$7,ROW(A1)),ROW($B$1:$B$7),""),ROW(A1)-SUM(IF($B$1:$B$7<SMALL($B$1:$B$7,ROW(A1)),1,"")))) C1の数式をC7までコピー。 C1:C7の数式をD1:D7までコピー。
お礼
ご回答ありがとうございます。 やり方って1通りだけではないんですね・・・ でも、こちらも思っていた以上に長いですね。 解読 頑張ってみます。 ありがとうございました。
- kkkkkm
- ベストアンサー率66% (1719/2589)
メニューにある並べ替えでは駄目なんでしょうか。優先順をB、Aにして並び替えたらできますけど。
お礼
ご回答ありがとうございました。 こんなに簡単にできるのですか? 一度やってみます。 ありがとうございます。
お礼
ご回答ありがとうございます。 使うならIFかなぁ・・・とは思っていましたが すごく長くなりますね。 解明するのに少し時間がかかりそうですが 頑張ってみます。 回答に画像を張り付ける事なんてできるんですね・・・ すごくわかりやすいです。 すごいですね! ありがとうございます。