- ベストアンサー
【エクセル】奇数行の、1以上の数字のセルをカウントする方法
教えてください。 エクセルで、1以上の数字の入っているセルの数を数える方法です。しかも、奇数行のみ抜き出して、条件にあったセルをカウントしたいのです。 【例】 日 参加人数 1 0 (0) 2 1 (0) 3 5 (3) 4 0 (0) 5 2 (0) ※()内は参加人数のうち、料金を払った参加人数を内数で記入 【例の表の補足説明】・・・ 日ごとの参加人数を記入。()内には内数で料金を払った参加人数を記入。例えば2日は1名の参加者がおり、料金を払った参加人数はいない。把握したいのは、参加者がいた日数。 上記のような表で、「参加日数」を数えたいと考えています。 2、3、5日に参加者があり、この場合の参加日数は「3日」となるのですが、それをカウントしたいのです。 エクセルでの入力用の表は既存のものがあり、200名ほどのパソコンの知識があまり無い人に使ってもらっており、表自体は変えられない状況です。 現在は日々の参加人数を入力、日数を各自が数え入力して処理してますが、参加日数の入力忘れが多く、その注意をしきれないため、みんなが使っているデータ表に計算式を入れたいと思っています。 奇数行のセルの数値を合計する計算式は分かったのですが、1以上のセルの個数をカウントとなると、COUNTIFで「0」以上のセルをカウントする条件式と組み合わせるのだろうとは思うのですが、うまく出来ません。 よろしくお願いします
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
質問者の後学のため、配列数式という仕組みでやって見ます。 =SUM(IF((MOD(ROW(A1:A10),2)=1)*(A1:A10>=1),1,0)) と入れてShift、CTRL,Enterキーを同時押しする。 -- 式の意味簡単解説 MOD(ROW(A1:A10),2)=1 奇数 A1:A10>=1 値が1以上 * 上記条件を両方満たす。AND条件。3条件以上でも同じように 並べればできる。 IF((・・ ),1,0)) 条件を満たすとき1、そうで無いと0 SUM(・・ 全部加える 配列数式は、条件をそのまま式にできる考え易さがあります。 例データ A列A1:A10 0.5 1 2 3 0.5 2 1 3 2 4 結果 3
その他の回答 (5)
- maron--5
- ベストアンサー率36% (321/877)
◆ごめんなさい、セル数でしたね ★これでいかがですか =SUMPRODUCT((A1:A100>0)*(B1:B100>=1))
- maron--5
- ベストアンサー率36% (321/877)
◆例のように奇数行に、1以上の数字が入力されていれば =SUMIF(A1:A100,">0",B1:B100)
- zap35
- ベストアンサー率44% (1383/3079)
#02です。ISODD関数は「ツール」→「アドイン」→「分析ツール」にチェックが必要でした。以下ならそれは不要です =SUMPRODUCT((MOD(ROW(B1:B100),2)=1)*ISNUMBER(B1:B100)*(B1:B100>0))
お礼
この式をこのまま使わせていただきました。 ありがとうございました。 これでいちいち参加日数を数えず、自動計算してくれるので、みなさんの作業が楽になると思います。 お礼が遅れ、すみませんでした。仕事のパソコンではGOOにはアクセスできず、休みまで待たなければならなかったので、こんなになってしまいました。
- zap35
- ベストアンサー率44% (1383/3079)
B列の奇数行に1以上の数字が入力されているセルの数を数える式です。(100行目までにしているので、範囲は変更してください) =SUMPRODUCT((ISODD(ROW(B1:B100))*ISNUMBER(B1:B100)*(B1:B100>0)))
- zug
- ベストアンサー率70% (82/116)
簡単なのは参加人数の右の列に =IF(AND(左のセル>0,MOD(ROW(),2)=1),1,0) を埋めて合計することだと思います。 ひとつのセルでの計算で終わらせるなら配列数式を使う必要があります。
お礼
簡単だとは思うのですが、列を増やすと、使う他の人が混乱しそうで・・・ でも、ありがとうございます。発想の転換が必要ですね。
お礼
この式すごいですね。 Shift、CTRL,Enter同時押しした瞬間、「うおっ」と思いました。 初めて見ました。 勉強してみます ありがとうございます