- ベストアンサー
関数を使って並べ替える方法を教えてください
エクセルで関数を使って並び替える方法を教えてください セルに 12日 田中 14日 田中 12日 太田 13日 太田 12日 鈴木 13日 鈴木 と入力していますが、これを別のセルに関数を使って 、同じ日を並べて 12日 田中 12日 太田 12日 鈴木 12日 (空欄) 12日 (空欄) 13日 太田 13日 鈴木 名前の順番はどうでもいいのですが、5名いない場合は空欄となるようにしたいのです ご指導よろしくお願いします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 同一日にデータが5個以上あってもとりあえず表示するのは5個までとしての一例です。 ↓の画像で説明します。 前提として、A列とE列の表示形式はユーザー定義から 0日 としておきます。 (すなわちA列は日付の数値のみの入力とします) 作業用の列を1列設けます。 作業列C2セルに =IF(COUNTIF($A$2:A2,A2)=1,RANK(A2,A:A,1),"") という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 E2セルに =IF(COUNT(C:C)*5<ROW(A1),"",INDEX(A:A,MATCH(SMALL($C:$C,INT(ROW(A5)/5)),C:C,0))) F2セル(配列数式になります)に =IF(OR(E2="",COUNTIF(A:A,E2)<COUNTIF($E$2:E2,E2)),"",INDEX($B$1:$B$100,SMALL(IF($A$1:$A$100=E2,ROW($A$1:$A$100)),COUNTIF($E$2:E2,E2)))) もしこの画面からF2セルにコピー&ペーストする場合はF2セルに貼り付け後、 数式バー内で一度クリック → 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 最後にE2・F2セルを範囲指定 → F2セルのフィルハンドルで下へコピー!で画像のような感じになります。 以上、関数で無理矢理って感じの方法でした。m(_ _)m
その他の回答 (1)
- KURUMITO
- ベストアンサー率42% (1835/4283)
A2セルから下方に日にちが、B2セルから下方に氏名があるとしたら、C列を作業列としてC2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",SUBSTITUTE(A2,"日","")*1000+COUNTIF(A$2:A2,A2)) この式では12日などは文字列として入力されているとしています。日付として入力し表示形式で12日としている場合には式が多少変わりますね。 そこでお求めの表をF2セルとG2セルの下方に表示させるとしたらF2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(INT(SMALL(C:C,1)/1000)+INT((ROW(A1)-1)/5)>INT(LARGE(C:C,1)/1000),"",INT(SMALL(C:C,1)/1000)+INT((ROW(A1)-1)/5)&"日") G2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTIF(C:C,SUBSTITUTE(F2,"日","")*1000+COUNTIF(F$2:F2,F2))=0,"",INDEX(B:B,MATCH(SUBSTITUTE(F2,"日","")*1000+COUNTIF(F$2:F2,F2),C:C,0)))
お礼
ありがとうございました 関数をもっと勉強したいので、今回作っていただいた式を じっくり1つずつ分析したいと思っています ありがとうございました
お礼
図まで入れていただいてわかりやすくしていただき感謝します うまくいきましたので、驚いています 今から、教えていただいた各式を1つずつ研究します ありがとうございました