エクセル初心者です。
よろしくお願いいたします。
エクセルでこのような表を作っています。
A B C
1 10 15
2 20
3 10
4 15
5 10
6 10 10
7
8
この時、データの入っている行数をカウントしたいのです。
上の例では 「6」 です。
途中に空白の行はありません。
A列、B列にはどちらにも数字が入る場合と、どちらかにしか
入らない場合があります。
なので COUNT は使えないですよね?
今まではデータを入力後、下の空白の行を削除し、C列で COUNTBLANK
として求めていたのですが、表の長さ(行数)が一定でないため、
体裁が悪くなってしまっていました。
希望としては。
最終行のC列に「終了」などと入れると、その文字列を判別
してくれて、それより上の行数をカウントしてくれる。
または
例えば OR を使って、A列B列どちらかにデータがある
場合のみ、カウントしてくれる。
こんなワガママなことができたら、と思っております。
補足が必要ならばいたします。
それと、遅くなるかもしれませんが、お礼は必ずさせていただきます。
No.1
- 回答日時:
C欄に空白以外のセルの個数を数える
COUNTA(値1,値2,...)を使ってはいかがでしょうか。
複合式になりますが
C1には=IF(COUNTA(A1,B1)>=1,1,0)を代入します。
D9(じゃなくても適当なセル)で=SUM(D1:D8)=列数が返ります。
もっとスマートな方法があればよいのですが。
A B C
1 10 15 1
2 20 1
3 10 1
4 15 1
5 10 1
6 10 10 1
7 0
8 0
9 6
No.2
- 回答日時:
すみません#1です、訂正です。
誤:D9(じゃなくても適当なセル)で=SUM(D1:D8)=列数が返ります。
正:C9(じゃなくても適当なセル)で=SUM(C1:C8)=列数が返ります。
回答ありがとうございます。
>C欄に空白以外のセルの個数を数える
COUNTA(値1,値2,...)を使ってはいかがでしょうか。
私が最初に思いついたのがこの方法でした。
ですが、エラーが出たりして数式がうまく作れず、苦心しておりました。
>=IF(COUNTA(A1,B1)>=1,1,0)
>=SUM(C1:C8)
で、C列を表示しないようにすればすっきりしますね。
私のしたいことがばっちりできました。
参考にさせていただきます。ありがとうございました。
No.3
- 回答日時:
=MAX(MATCH(10^10,A:A),MATCH(10^10,B:B))
で、A列またはB列の中で数値が入っている最終行を返します(10^10以上の数値は入っていないものとします)。
=MATCH("終了",A:A,0)
で、A列の中で「終了」と入力されている行を返します。
詳しくはヘルプを参照してください。
回答ありがとうございます。
恥ずかしながら MATCH についてまだ何も知らなかった私なので、
ちょっとだけですが、ヘルプを見て勉強してみました。
C列最終行にはできれば「終了」をいれたく、
そして行数を返したいセルは、任意の位置にしたいので、
そこに
=MATCH("終了",A:A,0)
というのがシンプルで私にもわかりやすいようです。
参考にさせていただきます。ありがとうございました。
No.4
- 回答日時:
C列にはデータが有る行の累計を表示しておいて、その最大値(この場合は"6")を見れば良いのではと思いますが、それではダメでしょうか。
C2 には次の式を入れ、下にコピーします。
=IF(COUNT(A2:B2)>0,C1+1,0)
1 A B C
2 10 15 1
3 20 2
4 10 3
5 15 4
6 10 5
7 10 10 6
8 0
9 0
10 10 1
11 15 2
回答ありがとうございます。
「なるほど」と思ってしまいました。
「累計」ですね、考えてもみませんでした。
教えていただいた方法で、C列を非表示にして、任意のセルで
「C列の最大値」を返すようにすれば、私のしたいことが
できると思います。
参考にさせていただきます。ありがとうございました。
No.5
- 回答日時:
こんばんは。
>最終行のC列に「終了」などと入れると、その文字列を判別してくれて、それより上の行数をカウントしてくれる。
言い換えると、C列の「終了」の後の数字の行はカウントしません。
これは、A~C列には置けません。(循環参照エラーが発生します)
=IF(ISERROR(MATCH("終了",C:C,0)),"",MAX(INDEX(ISNUMBER(INDIRECT("A1:B" &MATCH("終了",C:C,0)))*ROW(INDIRECT("A1:B"&MATCH("終了",C:C,0))),,)))
なお、A1 から始まらない場合は、
ISNUMBER(INDIRECT("A1:B" の側のみの変更をしてください。ROW側の変更はしないでください。
回答ありがとうございます。
>C列の「終了」の後の数字の行はカウントしません。
>これは、A~C列には置けません。(循環参照エラーが発生します)
はい、この循環参照についてはわかります。
ですが、教えていただいた数式は私には複雑すぎて・・・
初めて見る関数ばかりでした・・・
コピペしてみたところ、行数は正しく示してくれましたが。
おいおい勉強して行きたいと思います。
複雑な数式を教えていただき、ありがとうございました
No.6ベストアンサー
- 回答日時:
こういう関数もあり?
=sum(if((a1:a50<>"")+(b1:b50<>""),1,""))
と入力して、ShiftとCtrlを押しながら、Enterを押す。
このような関数を配列関数 と いいます。
回答ありがとうございます。
配列関数、というのもまだまだ私の知らない世界で・・・
ヘルプを読んで少し勉強してみました。
まだ?の部分が多いですが、この教えていただいた数式は、
わからないなりにも納得できる(?)ような気がします。
参考にさせていただきます。ありがとうございました。
No.7
- 回答日時:
例データA1:B6
A列 B列
1015
20
ー10
ー 15
10
1010
ーー
A,Bとも空白の行を除く行数
=SUMPRODUCT(((A1:A6="")+(B1:B6=""))*1)
または
=SUM(IF(((A1:A6="")+(B1:B6="")),1,0))
と入れて、SHIFT,CTRL,ENTERの3つのキーを同時押しする。
(配列数式)
ーー
A,Bとそろって空白で無い行
=SUMPRODUCT((A1:A6<>"")*(B1:B6<>"")*1)
=SUM(IF(((A1:A6="")*(B1:B6="")),1,0))
と入れて、SHIFT,CTRL,ENTERの3つのキーを同時押しする。
(配列数式)
この回答への補足
回答ありがとうございます。
教えていただいたまま、コピペしてみましたが、
=SUM(IF(((A1:A6="")+(B1:B6="")),1,0))
だと「4」が返ってしまいます。
また、
=SUM(IF(((A1:A6="")*(B1:B6="")),1,0))
ですが、これだと「0」が返るので、
「空白の行が0」ということで、わかるのですが。
申し訳ありません、配列数式については、こちらで回答を
いただくまでまるで知らなかったので、にわか勉強では
とても理解できず、どこが間違っているのかも自分では
わかりません。
No.8
- 回答日時:
こんばんは。
#5の回答者です。
>教えていただいた数式は私には複雑すぎて・・・
>初めて見る関数ばかりでした・・・
>コピペしてみたところ、行数は正しく示してくれましたが。
>おいおい勉強して行きたいと思います。
私が、掲示板に書き出した数年前には、#5の書き方はなかったです。こういうのは、日進月歩で進化しているのです。世界中の人が、掲示板の中で書いていて、一人の人の思いつきが世界中に広まるわけですね。私の書き方は、Excel Ver.4 の書き方からヒントを得たもので、自分が最初に使ったとは思ってはいても、いつの間にか広まって、本当に、自分は最初だったのか分からなくなっているものがありますね。
VBAやマクロで覚えて、再び、ワークシート関数に戻ってくると、また、違った姿に見えてきます。数式は、おぼろげながらイメージは、最初にはあっても、いじっているうちに出来上がるものであって、組み立てていくものではないようです。それが、マクロなどと比較する難しいものなのです。
たびたびの回答ありがとうございます。
私にはこのようなサイトを除けば、エクセルに関して周りに質問できる人も、
教えてくれる人もおらず、独学、といえば聞こえはいいですが、
本当に我流で今現在もやっております。
思えば自営業をやっている主人の、経理の手助けになれば、と
Windowsのエクセルを初めて起動してみたのがきっかけでした。
そんな私が初めて作ったワークシートは、なんとSUM関数もなく(知らず)、
+や-をズラズラとつなげただけの、なんともお粗末なものでした(笑)
それでも、エクセルに興味を持ったのは間違いなく、徐々に
それこそカメの歩みのごとく、関数もひとつまたひとつと覚えて
いっています。
教えていただいた数式が、理解できる日が来るよう、これからも
マイペースでやっていきたいと思います。
また、こちらでお世話になることがあると思いますが、
どうぞよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Countifよりも早く重複数をカウントする方法ありますか? 18 2022/07/04 13:39
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Excel(エクセル) countif関数について質問 4 2022/06/14 12:11
- Excel(エクセル) 特定文字(数字)で行挿入、挿入された行で合計したい 2 2023/03/13 14:30
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) 列を自動で追加したい 3 2022/07/11 12:58
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- Visual Basic(VBA) VBA 最終行まで数式をコピーする 3 2023/01/03 15:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
エクセルで二つの数字の小さい...
-
LOOKUP関数を使えばいいのでし...
-
VBAで文字列を数値に変換したい
-
PowerPointで表の1つの列だけ...
-
エクセルの表から正の数、負の...
-
エクセル 文字数 多い順 並...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
Excelで半角の文字を含むセルを...
-
エクセルの項目軸を左寄せにしたい
-
Excel、市から登録している住所...
-
エクセル(勝手に太字になる)
-
50人を数回、グループ分けする...
-
エクセルで文字が混じった数字...
-
エクセルの並び変えで、空白セ...
-
オートフィルターをかけ、#N/A...
-
VBA 連続行データを5行ずつ隣の...
-
Excelで、A列にある文字がB列...
-
エクセルで2列のセルを連続して...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
エクセル(勝手に太字になる)
-
「B列が日曜の場合」C列に/...
-
エクセル 文字数 多い順 並...
-
EXCELで 一桁の数値を二桁に
-
エクセル 同じ値を探して隣の...
-
VBAで文字列を数値に変換したい
-
エクセルの並び変えで、空白セ...
-
Excelで半角の文字を含むセルを...
-
エクセルで文字が混じった数字...
-
Excel、市から登録している住所...
-
A列がない・・・A列が非表示に...
-
エクセルの表から正の数、負の...
-
[関数得意な方]教えて下さい・...
-
エクセルの項目軸を左寄せにしたい
-
エクセル 時間帯の重複の有無
-
Excelにてある膨大なデータを管...
おすすめ情報