[[20190206124007]] 『データの種類数を数える』(たく) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『データの種類数を数える』(たく)

文字列データが複数入った表があります。同じデータがいくつも重複しているのですが、データの種類数を数える関数はありますでしょうか。

< 使用 Excel:unknown、使用 OS:unknown >


 例えばA2セルからA10セルにすべて値がある場合。
 =SUMPRODUCT(1/COUNTIF(A2:A10,A2:A10))
 ではどうか?
(ねむねむ) 2019/02/06(水) 13:09

Sub main()
    '表を選択した状態で実行
    Dim c As Range
    For Each c In Selection
        ctr = ctr + 1 / WorksheetFunction.CountIf(Selection, c.Value)
    Next c
    MsgBox ctr & "種類"
End Sub
(mm) 2019/02/06(水) 13:13

 範囲内に空白セルがある場合は
 =SUM(IFERROR(1/COUNTIF(A2:A10,A2:A10),""))
 と入力してShiftキーとCtrlキーを押しながらEnterキーで式を確定(確定後、式が{}で囲まれればOK)で。
(ねむねむ) 2019/02/06(水) 13:16

スミマセン。とりあえず答えは得られたんですが、理解できてません。少し解説していただけると助かります。まずはCOUNTIF で、検索条件に範囲と同じ範囲を入れるのは、どういうことでしょうか。
(たく) 2019/02/06(水) 13:41

 COUNTIF(A2:A10,A2:A10)
 この式は
 COUNTIF(A2:A10,A2)
 COUNTIF(A2:A10,A3)
 COUNTIF(A2:A10,A4)
      〜
 COUNTIF(A2:A10,A10)
 の結果が配列となって得られる式となる。

(ねむねむ) 2019/02/06(水) 13:53


 なので式はA列のデータの隣に
 =1/COUNTIF(A$2:A$10,A2)
 と入力して下へフィルコピーしたものを合計しているのと同じことになる。
 でA列内で同じ文字列が2個ある物は1/2が2個、3個ある物は1/3が3個と同じ文字列のもの同士を足すと1になることでダブりなしの個数が求められている。
(ねむねむ) 2019/02/06(水) 13:58

 なお、一般的な関数や数式では配列を扱えず配列を返す数式の中の一つの値しか扱えないため、配列を扱えるSUMPRODUCT関数を使うか
 Shift+Ctrl+Enterで通常の関数を配列計算できるようにしている。
(ねむねむ) 2019/02/06(水) 14:01

ねむねむさんの説明で十分でしょうけど。

参考
https://bellcurve.jp/statistics/blog/15370.html

(もこな2) 2019/02/06(水) 14:21


むねむねさん、もなこ2さん、ありがとうございました。配列ってのは、初心者には少々ハードル高かったです。空白セルがあるとエラーが出るので、SUM とSTMPRODUCT を使い分けると言うところも、なかなか思い当たりませんでした。何とか解決できました。
(たく) 2019/02/06(水) 14:40

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.