• ベストアンサー

エクセル関数で質問

エクセルの関数で質問します。 選択範囲の中の数値の種類の数がいくつあるかを調べる関数や方法があれば教えてください。 例)選択範囲に1,1,2,3,4,5,3,5,7,6という数値がある場合、数値の種類の数は、7つと数えるたいのですが・・・、 とても急いでいます。どなたか教えてください。

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

  • ベストアンサー
  • hiromuy
  • ベストアンサー率27% (103/370)
回答No.4

以前、同じような質問に回答したのですが、"1,1,2,3,4,5,3,5,7,6"がA1~A10のセルに入力されている場合、A11のセルに、 =SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10)) と入力すれば、計算できます。 ただし、A1~A10のセルに1つでもブランクセルがあるとエラーが返りますので、その場合はブランクセルに0を入力+0は非表示として、A11のセルに、 =SUMPRODUCT(1/COUNTIF(B1:B10,B1:B10))-IF(COUNTIF(B1:B10,0)=0,0,1) と入力して下さい。

参考URL:
http://www.okweb.ne.jp/kotaeru.php3?q=209860
nobutch
質問者

お礼

ありがとうございます。急ぎの用だったので前の質問をよく捜せませんでした。 助かりました。

その他の回答 (4)

  • hiromuy
  • ベストアンサー率27% (103/370)
回答No.5

すみません。#4です。 #4の回答中、下の方の式が間違ってました。(A列とB列を間違っていました) 正しくは、 =SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10))-IF(COUNTIF(A1:A10,0)=0,0,1) です。 (ブランクセルが無ければ、必要ない式ですが・・・)

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

類似例で、私が何回も解答に載せた方法ですが、手っ取り早い方法を記します。急ぐのであれば、難しい理屈を理解する時間をかけるより、下記は判りやすい常識的な方法と思います。 まず問題にしている、頻度をカウントする列をA列とします。数値でも文字列でも下記方法で良い。 (1)Aをソートキーにしてソートする。 (2)使っていない列をX列と仮定して、X1にはA1をそのまま入れる。  X2セルに関数式「=IF(A2=A1、””、A2)」を入れる。 (3)X2の式をXn(nは最下行数)まで複写する。(右下の+を引っ張る。) (4)Xn+1(データ最下行より下の行)に「=COUNT(X1:Xn)」を入れると、ブランクでない行の数を数えてくれる。(20件程度でテスト済) 

nobutch
質問者

お礼

ありがとうございます。助かりました。

  • comv
  • ベストアンサー率52% (322/612)
回答No.2

こんにちは! 範囲は1列または1行でしょうか? それとも複数行複数列の範囲でしょうか? 1列複数行での例   A 1 1 2 2 3 5 : 7 2 =SUM(IF(ISNUMBER(A1:A7),(MATCH(A1:A7,A1:A7,0)=ROW(A1:A7))*1,0)) 配列数式なので [Ctrl]+[sHIFT]を押したまま[Enter]で 入力確定です。 もしデータが2行目からであれば  =SUM(IF(ISNUMBER(A2:A7),(MATCH(A2:A7,A2:A7,0)=ROW(A2:A7)-1)*1,0)) のように ROW(A2:A7)-1 出だし行数-1分引いて下さい 3行目からなら -2 4行目からなら -3 ・・・・

nobutch
質問者

お礼

ありがとうございます。助かりました。

  • takao
  • ベストアンサー率20% (34/170)
回答No.1

手元にEXCELが無いので具体的な関数名は判りませんが、 取り敢えず数が判れば良いなら以下の方法があります。 問題の選択範囲の数字を列と行に展開します。 その交点全てで、一致か不一致かの1、0判定を行います。 最初の数字の個数から、一致した個数の平方根を引いた 数字が答えになるはずです。

nobutch
質問者

お礼

ありがとうございます。助かりました。

関連するQ&A