- ベストアンサー
エクセルのcountifについて
はじめまして。 countifを使って以下の作業を行いたいのですが 上手くいきませんのでよろしくお願いします。 A B 1 1149 個数を出す 2 7921 3 97 4 171 5 265 ・ ・ ・ 10000まで A列に10000までランダムに数字を入力して COUNTIF(A1:A10000,1)で B列にA1からA10000の内1は何個か数える。 ここまでは出来るのですが このまま10000まで引っ張って行くと COUNTIF(A2:A10001,1) COUNTIF(A3:A10002,1) ・ ・ ・ となってしまいます。 私としては COUNTIF(A1:A10000,1) COUNTIF(A1:A10000,2) COUNTIF(A1:A10000,3) と範囲はそのままで検索だけを1から10000まで変えたいのですが方法はあるでしょうか? 手作業でやる事も考えましたが余りにも時間がかかるので挫折しました。 解決法をご存知の方よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは~ 既に回答が出ているように $A$1:$A$10000 と、絶対参照にすれば、下にコピーしても範囲は変わりません。 No.4の方の回答のように 10000の前にだけ $を付けてもダメです。 A$1:A$10000 ならいいですが・・。 $は、数式を入力するときに、A1 と入れて F4キー、A10000 と入れて F4キーを押せば、自動的に $A$1:$A$10000 になります。 ただし、A:A として A列全体を指定したほうがカンタンだと思いますよ。 =COUNTIF(A:A,1) とすれば、A列全体の中で、1がいくつあるか数えてくれます。 検索条件ですが、上の式を下にコピーしてもなにも変わりません。まったく同じ数式がコピーされるだけです。 こういう場合は、B1に =COUNTIF(A:A,ROW(A1)) と入れます。 これを下にコピーすれば =COUNTIF(A:A,ROW(A2)) =COUNTIF(A:A,ROW(A3)) ・ ・ のようになります。 ROW関数は指定したセルの行番号を返しますから、ROW(A1)は1、ROW(A2)は2 と同じことです。行番号を見れば、どの数字の個数かはわかりますから、わざわざ他の列に 1~10000と入力する必要はないと思います。 説明が長くなりましたが、要はB1に =COUNTIF(A:A,ROW(A1)) または =COUNTIF($A$1:$A$10000,ROW(A1)) と入れて、B10000までコピーしてください。 コピーは 10000行まで引っ張ってもかまいませんが、B1に数式を入れたあと、B1を選択して、セルの右下にあるフィルハンドル(小さな■)をダブルクリックするだけで一気に B10000まで数式がコピーされると思います。A列の途中に空白セルがなく連続でデータが入っていれば、ですが・・。 フィルハンドルがわからなければ参考URLを見てください。
その他の回答 (5)
- mshr1962
- ベストアンサー率39% (7417/18945)
他の方も回答していますが 絶対座標を使う方法 =COUNTIF($A$1:$A$10000,ROW(A1)) ROW(A1)は1になります。コピー時にA2,A3...と変わればそのまま2,3..になります。 名前を使う方法 A1:A10000を選択して「挿入」「名前」「定義」で"データ"とつけます。 =COUNTIF(データ,ROW(A1))
お礼
今回は回答ありがとうございます。 目からウロコの連続です。 短時間の内に答えて下さった全ての皆様に感謝しております。 また分からない事がありましたらよろしくお願いします。
- murabon
- ベストアンサー率23% (42/180)
10000の前に「$」マークをいれ、COUNTIF(A1:A$10000,1)とすればできます。 Excel本では「相対参照」/「絶対参照」といった仰々しい名前がついていますが、要するに参照先に「$」をいれ、固定してしまうことができるということです。
お礼
本当に今回はすごいタメになりました。 知らない事ばかりでお恥ずかしい限りです。 短時間の内にあっという間に解決出来てしまい感謝の連続です。
- imogasi
- ベストアンサー率27% (4737/17069)
複写しても式の行や列をあらわす部分のの表現が変わらないようにするには それぞれに$をつけます。 (1)$なしA1(行列に応じて変化) (2)列固定$A1 (3)行列とも固定$A$1 の3つを場合に応じて使い分けます。 (1)上辺を固定(COUNTIFなどで第1行目から現在行までなど) $A1:A1のように (2)固定したセル範囲(本質問の場合) (3)表をあらわす(VLOOKUP、D関数などのCriteria)(2)と同じですが、よく誤りやすいので に使います。 連続正整数はRow()などを使います。 1列使ってもよいなら、ご存知のオートフィルで連続数が作れます。
お礼
詳しい説明ありがとうございます。 頭の悪い私でもよく理解できた気がします。 早速ノートにメモしてこれからも役立てます。
- Somali_Shinji
- ベストアンサー率14% (45/305)
まずアドレスですが、A$1:A$10000 と入力すれば、ドラッグしても式の内容が変わりません。「絶対アドレス」ですね。 次に、ドラッグしてC列のセルに、1から10000まで入れます。 で、セルB1の式を =countif(a$1:a$10000,c1) とすれば、ドラッグしても期待通りになるはずです。 しかしそんなやりかたより、ピボットテーブル使ったほうが早いですよ。
お礼
今回は回答ありがとうございます。 $を使うとこんな風になるんだと初めて知りました。 知らなかった事ばかりで目からウロコです。
- nobitahair
- ベストアンサー率27% (24/88)
A1:A10000は先に$A$1:$A$10000にしてからドラッグ。 条件1,2,3,4…の代わりにrow(A1)にすればいいんじゃないですか?
お礼
この度は回答ありがとうございます。 rowと言うのは使った事がありませんでしたが素晴らしい物ですね! ずっと疑問だった事があっさりと解決しました。 ありがとうございます。
お礼
今回はとても詳しく分かり易い説明をありがとうございます。 皆さん本当にすごいです! 私のエクセル活用なんて初歩の初歩のままレベルが停まっていますので知らない事ばかりで1日でなんかかなりレベルアップした様な気までしてしまいます。