みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【エクセル】奇数行の、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」以上のセルをカウントする条件式と組み合わせるのだろうとは思うのですが、うまく出来ません。

よろしくお願いします

投稿日時 - 2008-02-09 12:44:19

QNo.3758775

すぐに回答ほしいです

質問者が選んだベストアンサー

質問者の後学のため、配列数式という仕組みでやって見ます。
=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

投稿日時 - 2008-02-10 10:47:44

お礼

この式すごいですね。
Shift、CTRL,Enter同時押しした瞬間、「うおっ」と思いました。
初めて見ました。

勉強してみます

ありがとうございます

投稿日時 - 2008-02-16 23:32:36

ANo.6

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.5

◆ごめんなさい、セル数でしたね
★これでいかがですか
=SUMPRODUCT((A1:A100>0)*(B1:B100>=1))

投稿日時 - 2008-02-09 21:52:13

ANo.4

◆例のように奇数行に、1以上の数字が入力されていれば
=SUMIF(A1:A100,">0",B1:B100)

投稿日時 - 2008-02-09 21:46:49

ANo.3

#02です。ISODD関数は「ツール」→「アドイン」→「分析ツール」にチェックが必要でした。以下ならそれは不要です

=SUMPRODUCT((MOD(ROW(B1:B100),2)=1)*ISNUMBER(B1:B100)*(B1:B100>0))

投稿日時 - 2008-02-09 14:51:26

お礼

この式をこのまま使わせていただきました。
ありがとうございました。

これでいちいち参加日数を数えず、自動計算してくれるので、みなさんの作業が楽になると思います。

お礼が遅れ、すみませんでした。仕事のパソコンではGOOにはアクセスできず、休みまで待たなければならなかったので、こんなになってしまいました。

投稿日時 - 2008-02-16 23:02:29

ANo.2

B列の奇数行に1以上の数字が入力されているセルの数を数える式です。(100行目までにしているので、範囲は変更してください)

=SUMPRODUCT((ISODD(ROW(B1:B100))*ISNUMBER(B1:B100)*(B1:B100>0)))

投稿日時 - 2008-02-09 13:08:08

ANo.1

zug

簡単なのは参加人数の右の列に
=IF(AND(左のセル>0,MOD(ROW(),2)=1),1,0)
を埋めて合計することだと思います。

ひとつのセルでの計算で終わらせるなら配列数式を使う必要があります。

投稿日時 - 2008-02-09 12:55:39

お礼

簡単だとは思うのですが、列を増やすと、使う他の人が混乱しそうで・・・

でも、ありがとうございます。発想の転換が必要ですね。

投稿日時 - 2008-02-16 23:04:20

あなたにオススメの質問