[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『数式内の配列とは』(kobi)
お世話になっております。最近の回答の中に、 [[20031213162708]]『countif関数を使って○△×を数える』(masabou5) などで
=SUMPRODUCT((A1:A10={"○","△","×"})*1) というような数式内の { }を見かけるようになりました。 この数式内の配列?の使用法、解説をお願いしたいんですが…。 配列数式の使い方と違って、そのまま{ }と打ちこんでもOKなんですねぇ。
SUMPRODUCTで検索すると89件あります。 [[20020920173138]] 『条件が2つあるときCOUNTIFを使って』(JIN) で行列数式で回答しましたが、尋さんのSUMPRODUCT関数の活用案内で開眼し、この便利な関数を利用しています。 =SUMPRODUCT((A1:A10={"○","△","×"})*1)の式で A1の値が配列{"○","△","×"}にあればTRUEで1、なければFALSEで0を返します。これに*1とします。 このA1〜A10まで格納した値を合計します。結局、積の合計SUMPRODUCTになります。 お遊び例題 A1に1〜10の乱数を発生させる式 =INT(RAND()*10)+1 を入力しA40までコピーします。 B1:B10に1〜10の連番入力、C1に =SUMPRODUCT(($A$1:$A$40=B1)*1) と入力C10までコピーします。 C11に =SUM(C1:C10) 当然値は40になります。[F9]を押して再計算して確認して下さい。 これを =SUMPRODUCT((A1:A40={1,2,3,4,5,6,7,8,9,10})*1) とすれば、C1:C11の処理が出来てしまいます。 kobiさんのようなEXCELのベテランに72歳に近づいたおいぼれが返答するのは筋違いですが、 正しい説明は他のEXCEL愛好家に期待します。 SUBPRODUCT関数大好きな・・・(シニア)
(シニア)さま、丁寧な解説ありがとうございました。 常々、(シニア)さんはじめ達人の皆さんの技に敬服しております。 達人技を吸収するべくとりあえず引き出しに保存してるんですが、 後で検証する間もなく次々とたまる一方でして、"整理しなけりゃただの物置"ですよね。 ちょっと使い方が違うかもしれませんが、これからも達人技の解説をお願いすると思います。よろしくお願いしまーす。 怠惰ですが、全くベテランではありません。お恥ずかしい(kobi)
↑ 更に付け加えるべきは、切っ先鋭い笑えるコメント。 すがやんのコメント愛読者(弥太郎)
うーむ、うーむと唸るばっかし。皆さん返事ありがとうございます。 本来というか、ヘルプなどのSUMPRODUCT関数は =SUMPRODUCT(配列1、配列2、・・・) の積の和を求めますよね。 で、=SUMPRPDUCT((配列など)*(条件など))として、条件式の個数をカウントする。いわばANDの条件式の合計ということでしょうか。 で、 (シニア)さんの=SUMPRODUCT((A1:A40={1,2,3,4,5,6,7,8,9,10})*1) は、ORの条件式の合計と考えればいいのかな? (通りすがりの者)さん、理解力が乏しくてすみません。 >=SUMPRODUCT((A1={"A","B","C"})*{10,200,3000})なども出来ますよ。 具体的に例題などで、解説お願いしていいですか? 解説収集マニア (kobi)
kobiさん予測通りEXCELの解析力抜群ですね! =SUMPRODUCT((A1:A40={1,2,3,4,5,6,7,8,9,10})*1) は =SUMPRODUCT((A1:A40=1)+(A1:A40=2)+(A1:A40=3)+(A1:A40=4)+(A1:A40=5)+(A1:A40=6)+(A1:A40=7)+(A1:A40=8)+(A1:A40=9)+(A1:A40=10)) でORの条件式の合計になります。 (シニア)
度々すみません。 >赤穂の方々も 何のことか聞こうと思って、やっと気がつきました。えへえへ (通りすがりの者)さんの =SUMPRODUCT((A1={"A","B","C"})*1, {10,200,3000})を利用すると、 =SUMPRODUCT((B164={"A","B","C","D","E","F","G","H","I","J"})*{1,2,3,4,5,6,7,8,9,10}) のように、IFのネスト数を気にせず利用できますねぇ。それで、さっきから b=164{}でなく、SUMPRODUCT((b164<={})とかの条件分岐が出来ないものか悩んでます。 先生方、可能なことでしょうか? 本日おもしろくて学校とエクセルを往復してました。エクセルに酔った(kobi) あ、酒飲まなきゃ!
訳判らんこと書いてすみません。例えば =IF(b164<=100,"A",IF(b164<=80,"B",・・ というような条件分岐の式を =SUMPRODUCT((b164<={100,80,60…}*{"A","B","C"…})というように出来れば、 IF関数のネスト数の呪縛に捉われなくてすむかと考えました。 以前、無理やりネスト技?で登校したことがある厚顔可憐な(kobi)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.