- 締切済み
任意の回数を
お世話になります。エクセルの関数で質問です。 田中 0 斉藤 0 山本 -100 田中 0 斉藤 -50 山本 0 こういう上記の数表があったとして、同シート内に、以下のまとめの表を作り 田中 (0の回数) 斉藤 (0の回数) 山本 (0の回数) という感じに、()の部分に関数を入れ、0だった時の回数を抽出する事は出来ますか? COUNTIFを組み合わせる?ところで頓挫してしまっています・・・ よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- KURUMITO
- ベストアンサー率42% (1835/4283)
COUNTIF関数を使うことをまず初めに考えるでしょう。しかしながら二つの条件を同時に満たすデータの数を求めるとなると難しいですね。SUMPRODCT関数などが考えられますがデータの数が多くなりますと計算が重くなりますので必ずしも推奨されません。ご自分のレベルに合った比較的簡単な関数を使うことをまず考えるようにしましょう。 それには作業列を作って対応することです。作業列が目障りでしたらその作業列を選択して右クリックして「非表示」を選択することで隠すこともできます。 例えばシート1のA2セルから下方に氏名が、B2セルから下方にデータの数値が入力されるとします。 作業列としてC2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(COUNTIF(A$2:A2,A2)=1,MAX(C$1:C1)+1,"") この式は入力された氏名をダブりのない形で別の表に表示させるために使います。 また、作業列としてD2セルには次の式を入力して下方にオートフィルドラッグします。 =A2&B2 そこでお求めの表ですが別のシートのA2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ROW(A1)>MAX(Sheet1!C:C),"",INDEX(Sheet1!A:A,MATCH(ROW(A1),Sheet1!C:C,0))) これでシート1でのダブりのない氏名がA列に表示されます。 そこで、0だった時の回数をB列に表示させるわけですが、その0という条件の数値をB1セルに入力することにします。それによってB1セルの数値を-50などと変えることでー50の回数を表示させることもできるようになります。 B2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",COUNTIF(Sheet1!D:D,A2&B$1)) これでB1セルに入力した数値の回数を各人について表示させることができます。 以上のような作業は幾分負担に感じるかもしれませんが使われている関数や式の組み立て方はエクセルを使ってゆく上で大切なものばかりです。式のカッコ良さではありません。ご自分の力にあったエクセルの基本をまず学ぶことです。そのことで複雑な課題も解決できるようになるのです。ぜひ試験をしてみてください。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 当方使用のExcel2003以前のバージョンだとSUMPRODUCT関数が使えると思います。 Excel2007以降のバージョンですとCOUNTIFS関数が使用可能です。 一例です。 ↓の画像のようにC列を作業用の列としています。 そしてF1セルに求めたい数値を入れるようにしてみました。 作業列C2セルに =IF(COUNTIF($A$2:A2,A2)=1,ROW(),"") という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 E2セルに =IF(COUNT(C:C)<ROW(A1),"",INDEX(A:A,SMALL(C:C,ROW(A1)))) F2セルに =IF(E2="","",SUMPRODUCT(($A$1:$A$100=E2)*($B$1:$B$100=$F$1))) という数式を入れ、E2・F2セルを範囲指定 → F2セルのフィルハンドルで下へコピーすると画像のような感じになります。 参考になれば良いのですが・・・m(_ _)m
- kmetu
- ベストアンサー率41% (562/1346)
名前がA列 次の数値がB列で、まとめの名前の列がD列とした場合 たとえばE列に =SUMPRODUCT(($A$1:$A$6=D1)*($B$1:$B$6=0)) としてみてください。