• 締切済み

エクセルの関数

シート1の1行目には見出しが入っています シート1の A列には、店の名前 B列には、個人の名前 C列には、月(4月~3月) が入っています・ このデータは、その月の成績の良かった人です。 ですので シート1のA列 B列 C列は 各項目がランダムに入っています。 各月に成績のヨカッタ人なので 名前がダブって入っています シート2のA1には 4月  B1には5月 C1には6月 D1には7月 E1には8月 F1には9月 G1には10月 H1には11月 I1には12月 J1には1月 K1には2月 L1には3月 と入っています。 シート2の A2~  4月に成績のヨカッタ人を B2~ 5月に成績のヨカッタ人を ずっと同じパターンで続き L2~3月成績のヨカッタ人を 並べたいのです ですが、月によって 人数はバラバラです どうやって シート2に関数を入れたらいいでしょうか?

みんなの回答

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

どんなにデータが多くなっても計算に負担が少なく分かり易い方法は作業列を作って対応することです。 作業列が目障りでしたらその列を選択して右クリックし「非表示」を選択すればよいでしょう。 なお、月の入力は4月ならば4月と入力するのではなく4と数値を入力します。セルの表示形式のユーザー定義で種類の窓には 0"月" と入力して4月と表示させることもできます。 シート1のD2セルには次の式を入力して下方にドラッグコピーします。 =IF(C2="","",C2*1000+COUNTIF(C$2:C2,C2)) シート2ではA1セルから横に4,5,6…と入力した後にA2セルには次の式を入力して右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>COUNTIF(Sheet1!$C:$C,A$1),"",INDEX(Sheet1!$B:$B,MATCH(A$1*1000+ROW(A1),Sheet1!$D:$D,0)))

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! Sheet2のA2セルに =IF(COUNTIF(Sheet1!$C:$C,A$1)<ROW(A1),"",INDEX(Sheet1!$B$1:$B$100,SMALL(IF(Sheet1!$C$1:$C$100=A$1,ROW($A$1:$A$100)),ROW(A1)))) これは配列数式になってしまいますので、Shift+Ctrl+Enterで確定! この画面からコピー&ペーストする場合はA2セルに貼り付け後、数式バー内で一度クリック! 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定します。 数式の前後に{ }マークが入り配列数式になります。 これを列・行方向にオートフィルでコピーではどうでしょうか? ※ 数式はSheet1の100行目まで対応できる数式にしていますが、 配列数式は極端にデータ量が多い場合、PCにかなりの負担をかけ計算速度が極端に落ちます。 1000行程度であれば問題ないと思います。m(_ _)m

関連するQ&A