電子書籍の厳選無料作品が豊富!

急ぎで過去の質問を検索できていません。あしからずご容赦を!
エクセルで次のよな個数計算をしたいのですが、教えて下さい。関数を使って出来るでしょうか?

A列   B列
京都    1
京都    2
京都    2
京都    3
京都    4
大阪    5
大阪    6
大阪    7
大阪    8
東京    9
東京    9
静岡    10
愛知    11
愛知    12
奈良    13
山梨    14
山梨    15
山梨    15
山梨    15
山梨    16
・     ・
(データ続きます)
B列の同じ数字は、1に数えます。上の表の
個数計算の結果は
京都 4  大阪 4  東京 1  静岡1
愛知 2  奈良 1  山梨 3
というふうにしたいのです。
ごつごつアレコレとすれば出来るのだろうと思いますが、出来るだけシンプルに、スマートにしたいのです。欲張りますが、宜しくお願いします。

A 回答 (6件)

■ 空白セルがない場合


=SUMPRODUCT(($A$1:$A$100="京都")*(1/COUNTIF($B$1:$B$100,$B$1:$B$100)))

■ 空白セルがある場合
=SUMPRODUCT(($A$1:$A$100="京都")*(IF(ISBLANK($B$1:$B$100),0,1/COUNTIF($B$1:$B$100,$B$1:$B$100))))
(*) 配列数式のため、[Ctrl]+[Shift]+[Enter]で確定してください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
(1/COUNTIF($B$1:$B$100,$B$1:$B$100)))
の意味が、初心者なので分からないのです。
すみませんが、少し解説をお願いできると嬉しいのです。

お礼日時:2006/06/06 20:42

> ■ 空白セルがない場合


> =SUMPRODUCT(($A$1:$A$100="京都")*(1/COUNTIF($B$1:$B$100,$B$1:$B$100)))
>
> ■ 空白セルがある場合
> =SUMPRODUCT(($A$1:$A$100="京都")*(IF(ISBLANK($B$1:$B$100),0,1/COUNTIF($B$1:$B$100,$B$1:$B$100))))
> (*) 配列数式のため、[Ctrl]+[Shift]+[Enter]で確定してください。

提示した数式は、「A列が異なればB列は異なる」、
つまり、「B列が同じであればA列は同じ」が、前提条件です。
そのため、以下のような場合、正しい結果を返しません。

A列   B列
京都    1
大阪    1

> (1/COUNTIF($B$1:$B$100,$B$1:$B$100)))
> の意味が、初心者なので分からないのです。

例えば、

A列
京都
京都
京都
京都
京都
大阪
大阪
大阪
大阪
東京
東京
静岡
愛知
愛知
奈良
山梨
山梨
山梨
山梨
山梨

の場合、
B1に=COUNTIF($A$1:$A$20,A1)を、C1に=1/COUNTIF($A$1:$A$20,A1)を、
それぞれ入力して、下方向へコピーすると、

A列   B列   C列
京都   5   0.2
京都   5   0.2
京都   5   0.2
京都   5   0.2
京都   5   0.2
大阪   4   0.25
大阪   4   0.25
大阪   4   0.25
大阪   4   0.25
東京   2   0.5
東京   2   0.5
静岡   1   1
愛知   2   0.5
愛知   2   0.5
奈良   1   1
山梨   5   0.2
山梨   5   0.2
山梨   5   0.2
山梨   5   0.2
山梨   5   0.2

となります。
B列は「その行のA列の値がA列全体に何個あるか」を、
C列は「その行のB列の逆数」を、それぞれ求めています。
これにより、A列が同じ値のC列の和が必ず1になるので、
C列の総和が「A列の値の種類の数」となります。

これを応用しています。
    • good
    • 0
この回答へのお礼

懇切丁寧な解説、ありがとうございます。よく理解できました。感謝いたします。これで仕事がはかどります。

お礼日時:2006/06/06 23:37

[No.3回答に対するお礼]内の質問に対する回答、



》 この後カウントはどのようにすればいいのですか?

おやおや。
「[フィルオプションの設定]で重複するレコードは無視して表示されました」なら、下に示す列D、Eのようになったと思います。
次に列Dのみを[フィルオプションの設定]で重複するレコードは無視して列Gが得られますよね。そこで…
セル H2 に式 =COUNTIF(D:D,G2) を入力して、此れをズズーッと下方に複写したら列Hのデータが得られる次第で。

   A  B  C  D  E  F  G   H
1  県名 数   県名 数   県名 個数
2  京都  1   京都  1   京都   4
3  京都  2   京都  2   大阪   4
4  京都  2   京都  3   東京   1
5  京都  3   京都  4   静岡   1
6  京都  4   大阪  5   愛知   2
7  大阪  5   大阪  6   奈良   1
8  大阪  6   大阪  7   山梨   3
9  大阪  7   大阪  8
10 大阪  8   東京  9
11 東京  9   静岡 10
12 東京  9   愛知 11
13 静岡 10   愛知 12
14 愛知 11   奈良 13
15 愛知 12   山梨 14
16 奈良 13   山梨 15
17 山梨 14   山梨 16
18 山梨 15
19 山梨 15
20 山梨 15
21 山梨 16
    • good
    • 0
この回答へのお礼

ありがとうございます。
[フィルオプションの設定]で表示された値を別の列にcopyして、
また「[フィルオプションの設定]で表示された値を別の列にcopyしてをしてカウントする、
と理解していいのですか?

お礼日時:2006/06/06 20:31

[フィルオプションの設定]の“重複するレコードは無視する”機能で抽出したものをカウント。



↑「ごつごつアレコレ」方式で恐縮ですが、説明だけ「出来るだけシンプルにスマートに」しました。
不明な点はその旨お知らせを。
    • good
    • 0
この回答へのお礼

ありがとうございます。
>[フィルオプションの設定]の“重複するレコードは無視する”機能で抽出したものをカウント。

[フィルオプションの設定]で重複するレコードは無視して表示されました。
この後カウントはどのようにすればいいのですか?

お礼日時:2006/06/05 18:27

例データ


A+B列でソートされているとする。県は集っていて、かつ、番号の同じものは隣り合って集っているとする(注1)
A2:B25
A列  B列   D列  E列
京都1京都4
京都2大阪4
京都2東京2
京都3静岡1
京都4愛知4
大阪5奈良1
大阪6山梨4
大阪7
大阪8
東京6
東京9
東京9
静岡10
愛知11
愛知12
愛知13
愛知14
奈良13
山梨11
山梨14
山梨15
山梨15
山梨15
山梨16
D2:D8は上記D列のように県名があるとする。(注2)
E2に
=SUM(IF(($A$2:$A$25=$D2)*($B$2:$B$25<>$B$3:$B$26),1,0))
と入れてSHIFT+CTRL+ENTERを同時押し(配列数式)
E2の式をE8まで式を複写する。
結果
上記E列E2:E8
(注1)この仮定が置けない場合は、別のとき方になる
(注2)県名を関数で1つづつ集めるやり方はありますが、本質問のメインで無いとして略。
OKWAVEでの過去の「imogasi方式」で照会してもらえば、私の回答にあると思う。
    • good
    • 0
この回答へのお礼

ありがとうございます。
やはり配列ですか?
私はもう一つ理解力不足ですが、やってみます。

お礼日時:2006/06/05 18:25

=COUNTIF(A:A,"京都)



ほかは「京都」の部分を書き換えて下さい。
    • good
    • 0
この回答へのお礼

ありがとうございます。それで
=COUNTIF(A:A,"京都")
の式で、京都の個数が4にならないのですが?
5になるのですが、私がどこか間違っているのでしょうか?

お礼日時:2006/06/04 23:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!