• ベストアンサー

エクセルの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まで変えたいのですが方法はあるでしょうか? 手作業でやる事も考えましたが余りにも時間がかかるので挫折しました。 解決法をご存知の方よろしくお願いします。

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

  • ベストアンサー
  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.5

こんにちは~ 既に回答が出ているように $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を見てください。

参考URL:
http://arena.nikkeibp.co.jp/tec/excel/20040308/107604/
rodilyn
質問者

お礼

今回はとても詳しく分かり易い説明をありがとうございます。 皆さん本当にすごいです! 私のエクセル活用なんて初歩の初歩のままレベルが停まっていますので知らない事ばかりで1日でなんかかなりレベルアップした様な気までしてしまいます。

その他の回答 (5)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.6

他の方も回答していますが 絶対座標を使う方法 =COUNTIF($A$1:$A$10000,ROW(A1)) ROW(A1)は1になります。コピー時にA2,A3...と変わればそのまま2,3..になります。 名前を使う方法 A1:A10000を選択して「挿入」「名前」「定義」で"データ"とつけます。 =COUNTIF(データ,ROW(A1))

rodilyn
質問者

お礼

今回は回答ありがとうございます。 目からウロコの連続です。 短時間の内に答えて下さった全ての皆様に感謝しております。 また分からない事がありましたらよろしくお願いします。

  • murabon
  • ベストアンサー率23% (42/180)
回答No.4

10000の前に「$」マークをいれ、COUNTIF(A1:A$10000,1)とすればできます。 Excel本では「相対参照」/「絶対参照」といった仰々しい名前がついていますが、要するに参照先に「$」をいれ、固定してしまうことができるということです。

rodilyn
質問者

お礼

本当に今回はすごいタメになりました。 知らない事ばかりでお恥ずかしい限りです。 短時間の内にあっという間に解決出来てしまい感謝の連続です。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

複写しても式の行や列をあらわす部分のの表現が変わらないようにするには それぞれに$をつけます。 (1)$なしA1(行列に応じて変化) (2)列固定$A1 (3)行列とも固定$A$1 の3つを場合に応じて使い分けます。 (1)上辺を固定(COUNTIFなどで第1行目から現在行までなど)     $A1:A1のように (2)固定したセル範囲(本質問の場合) (3)表をあらわす(VLOOKUP、D関数などのCriteria)(2)と同じですが、よく誤りやすいので に使います。 連続正整数はRow()などを使います。 1列使ってもよいなら、ご存知のオートフィルで連続数が作れます。

rodilyn
質問者

お礼

詳しい説明ありがとうございます。 頭の悪い私でもよく理解できた気がします。 早速ノートにメモしてこれからも役立てます。

回答No.2

まずアドレスですが、A$1:A$10000 と入力すれば、ドラッグしても式の内容が変わりません。「絶対アドレス」ですね。 次に、ドラッグしてC列のセルに、1から10000まで入れます。 で、セルB1の式を =countif(a$1:a$10000,c1) とすれば、ドラッグしても期待通りになるはずです。 しかしそんなやりかたより、ピボットテーブル使ったほうが早いですよ。

rodilyn
質問者

お礼

今回は回答ありがとうございます。 $を使うとこんな風になるんだと初めて知りました。 知らなかった事ばかりで目からウロコです。

回答No.1

A1:A10000は先に$A$1:$A$10000にしてからドラッグ。 条件1,2,3,4…の代わりにrow(A1)にすればいいんじゃないですか?

rodilyn
質問者

お礼

この度は回答ありがとうございます。 rowと言うのは使った事がありませんでしたが素晴らしい物ですね! ずっと疑問だった事があっさりと解決しました。 ありがとうございます。

関連するQ&A

  • COUNTIF関数で

    セル範囲C10から31にある 文字列「A」の個数を求める為に =COUNTIF(C10:C31,"A") と入れてあります。 これを、文字列「A」と「B」の2つの個数を出すようにするにはどうすればよいでしょうか?

  • エクセルのcountif関数について

    二つの列にそれぞれ数値が入っている場合に、クロスしたデータの個数をカウントしたいのですが、どのような式を使えばよいかお教え下さい。 例えばA1~A10に20,30,20、・・・と規則的に入力されていて、B1~B10に1、2、3、1、2、3、・・・とこちらも規則的に入力されている場合で、A列が20でB列が3の場合、クロスした値は2個となるのですが、それをCOUNTIF関数で計算させたいのですが、...何か良い方法はありませんでしょうか。

  • COUNTIF 日付

    エクセル2003です。 A列 2008/12/1 2008/12/2 2008/12/3 2008/12/4 2008/12/5 と入力されています。 B1にCOUNTIFで「A列の2008/12/1から2008/12/3までの個数」を表示させたいのですが 関数式がわかりません。 =COUNTIF(A:A,"2008/12/1<2008/12/3") だと答えは3なのに0が返ってきます。 どういう式を作ればいいのでしょうか? よろしくお願い致します。

  • エクセルのCOUNTIF関数について

    エクセルのCOUNTIF関数について、というかCOUNTIF関数でよいのかどうかもよく分からないのですが、教えて下さい。 (1)まず、ワークシートのA列の1~100行目までの100マスを範囲として、数値を入力していくときに、仮に同じ数値を入力しようとしても、入力ができないようにしたいのです。 (2)次に、ワークシートのA列とC列のそれぞれ1~100行目までの合計200マスを範囲として、(1)と同じことをしたいのです。(つまりB列はとばして) (1)と(2)のようなことは可能でしょうか? お分かりの方がおられましたら、ぜひよろしくお願いします!

  • Excel 関数でcountifの複数条件

    Excelで条件にあった個数をカウントする関数はcountifですが、 複数の条件にあった個数をカウントする場合、countifの式はどうすればよいのでしょうか。 例えば A列の1行から20行で"○"が入っている個数のカウントは =countif(a1:a20,"○")ですが A列の1行から20行で"○"が入っていて、なおかつ B列の1行から20行に"1"が入っている個数のカウントを知りたいです。 =countif(a1:a20,"○")and(b1:b20,"1")ではないですよね。 よろしくご教授願います。

  • エクセル 関数 countif について

    A列、B列に -100~100 を10単位で入力 A列&B列でC列に文字列を生成 D列にcountifでC列の文字列がいくつあるかカウント 10-20の組み合わせが1個 20-10の組み合わせが3個 なのですが、どちらも4個と表示される ほかの組み合わせでは 正しい個数が表示される 何を改善したらよいでしょうか?

  •  エクセルの関数「COUNTIF」について・・・

     エクセルの関数「COUNTIF」について・・・  早速ですが「COUNTIF」の入力方法なんですが、通常であれば表やデータから範囲を指定して入力可能なんですが、下図のように対象のセルが離れている場合はどのように範囲設定をすればよいのでしょうか?  コントロールを使用して範囲を指定してみたのですが、エラーになってしまいました。  この下記の場合はAとBの「●」の合計個数を出したいのですが・・もちろん正解は「20個」です。  乱文で失礼しますがよろしくお願いいたします。

  • countifで解らない部分があります。教えてください。

    COUNTIFについて教えてください。 例:A1~A20のセルに1~5までの数が不規則にそれぞれ入っています。 次にA21~A25のセルに不規則に1~5の数字を入力しました。 A21~A25に隣接したB21~B25に答えが返ってくるようにします。 検索条件はA21~A25に不規則に入力した1~5の数字の個数なのですが B21・・・~B25=COUNTIF(A1:A20,◎◎◎) と、◎◎◎のところにA21~A25までに入った数字(この場合は1~5)を それぞれ手入力しなければなりません。 手間を省く為に◎◎◎のところを 「A21にはいっている数字と同じ数字」と設定したいのです。 (または「A21に入っている文字と同じ文字」としたいです。) 手っ取り早くいえば、A21に入力した数字と 同じ数字の数を数える式が知りたいのです。 そうすれば、オート-フィルが使えたりしてすごく手間が省け助かります。 不可能なのでしょうか? それともCOUNTIFとは違う関数を使うのでしょうか? 解りにくい文章で恐縮ですが、宜しくお願いします。

  • エクセル COUNTIF

    エクセルで A列に名前(例:山田太郎) 別のシートに検索範囲があります('Sheet2'!1:1048576) B列に検索結果を出したいので =COUNTIF('Sheet2'!1:1048576,"山田太郎") と入力しているのですが、A列に名前がたくさん並んでいるため、ひとつひとつ入れるのが大変なので、より簡単に出来る方法はありますか?

  • Excelの"COUNTIF"について。正確に答えてくれないんです。

    基本的なところかもしれないのですが、 アンケート調査を行って、今データの整理をしております。 はい:1 いいえ:0 と答えてもらったので、       =COUNTIF(B3:B300,"1")    =COUNTIF(B3:B300,"0") と入力しました。 それなのに、エンターキーで確定させても、 0個となってしまいます。 隣のC列D列などは、同じようにやってもきちんと個数がでるのに、 なぜ数えてくれないのかが分からず困っています。 (C列の式をコピペして、CをBに変えてもだめでした。) かなり切羽詰まっているので、 できたら至急教えていただきたいです。 どんな原因が考えられますか?

専門家に質問してみよう