質問: エクセルの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まで変えたいのですが方法はあるでしょうか? 手作業でやる事も考えましたが余りにも時間がかかるので挫折しました。 解決法をご存知の方よろしくお願いします。
回答: こんにちは~ 既に回答が出ているように $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を見てください。