[[20070111142420]] 『種類を数える演算式てありませんか?』(かず) >>BOT

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

 

『種類を数える演算式てありませんか?』(かず)
指定範囲の中のデータの種類を数えたいのですが何かいい演算式はありませんか?
たとえばセルA1:A4にそれぞれ、りんご、みかん、なし、みかん
と入力されていた場合は3を返すような演算式です。
エクセルは2003です。

 =SUMPRODUCT(1/COUNTIF(A1:A4,A1:A4))

 で計算できます。(sato)

satoさま、ありがとうございます!

 横からすみません、

=SUMPRODUCT(1/COUNTIF(A1:A4,A1:A4))

 この式で、どうして種類が出てくるのか、教えていただけませんか?すごく不思議です。
(関数勉強中)


 =SUMPRODUCT((MATCH(A1:A5,A1:A5,0)=ROW(A1:A5))*1)
こんな様な感じ

 関数勉強中さんへ

 下記の過去ログを見て下さい。
[[20060906110130]]『ある範囲の中にある数字の種類を数えたい』(おか)

 また、その中で #REF!MAN さんが提示している下記過去ログの
 LOOKUPさんのコメントもよ〜く確認して下さい。
[[20040806114257]]『重複データを除いてカウントする』(511)
 
(純丸)(o^-')b


 解説ありがとうございます。すぐには理解できません。ゆっくり考えてみます。

 純丸さんご紹介のところの説明は、「配列数式」になっているようですね。これも
 勉強しなくては。で、ここで出てきているのは、配列数式ではないようで、
 勉強することは多いです。

 (関数勉強中)


ご回答頂いた皆様ありがとうございます。
またまた教えて欲しいのですが、セルA1〜A4、D1〜D4(計8セル)
のように離れた複数の範囲内にある種類も同様に数える事は出来るのでしょうか?
(かず)

 ◆ご希望には合わないかもしれませんが、数字の種類なら出来たんですが
 =SUM(IF(FREQUENCY((A1:A4,D1:D4),(A1:A4,D1:D4)),1,))
 (Maron)

ありがとうございます。文字列を数字に換算する列を追加すればなんとか出来そうですね。文字列を数字に変換する関数てあるのでしょうか??質問ばかりですみません。

 MATCH関数などは如何でしょうか。

 『MATCH(検査値,検査範囲,照合の型)
  指定された照合の型に従って
  検査範囲内を検索し、検査値と一致する要素の、
  範囲内での相対的な位置を表す数値を返します。』

 <追記>
 VLOOKUP関数でも良さそうですね。
 ・・・でも、一覧表を作るなら本末転倒な気がします。

 (HANA)


 >で、ここで出てきているのは、配列数式ではないようで、
 全部配列関数です。
 BJ

 >>で、ここで出てきているのは、配列数式ではないようで、
 >全部配列関数です。
 「配列関数」 というのはどんな関数?

 SUM(A1:A5)
 INDEX(A1:A5,3)
 MATCH(A1,B1:B5,0)
 OFFSET(A1,,,3,2)
 なんかも「配列関数」?


 ↑誰だか知らないけど。

 ヘルプより
 SUMPRODUCT
 関連項目
 引数として指定した配列の対応する要素間の積をまず計算し、さらにその和を返します。

 書式
 SUMPRODUCT(配列1,配列2,配列3,...)

 配列1,配列2,配列3,...   計算の対象となる要素を含む配列を指定します。引数は 2 個から 30 個まで指定できます。 

 -------
http://tllsp.hp.infoseek.co.jp/howto/excel/06/siki.htm
http://support.microsoft.com/?scid=kb;ja;275166&spid=1741&sid=745
http://oshiete1.goo.ne.jp/qa2599666.html
http://www.cam.hi-ho.ne.jp/manbo/exala/exct040.htm

 後は自分でヘルプ見るなり調べてください。
 BJ

 範囲A1:A10の中で1or2の数をカウントする場合
 =SUM(COUNTIF(A1:A10,{1,2})*{1,1})
 こんな感じでも計算できますが、これも「配列関数」?

「配列数式」と「配列関数」を同義語として扱っているのかな?

 配列数式を確定するためにCtrl+Shift+Enterが必要なのでは?

 SUMPRODUCT関数を配列数式とは呼ばないのでは?

 =SUMPRODUCT((MATCH(A1:A5,A1:A5,0)=ROW(A1:A5))*1)
 を少し変えて
 =SUM(INDEX((MATCH(A1:A5,A1:A5,0)=ROW(A1:A5))*1,))
 これはどうなるの?  

 配列数式にすると
 {=SUM((MATCH(A1:A5,A1:A5,0)=ROW(A1:A5))*1)}

 BJ さんへ 
 大変失礼な記載の仕方で申し訳ありませんでした。

 「配列数式」、「配列関数」の定義が曖昧ですので 
 私のように「Ctrl+Shift+Enterで確定する式」と考えるものもいると言うことです。

 By しげちゃん


コメント返信:

[ 一覧(最新更新順) ]


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