• 締切済み

エクセルの配列数式、配列定数について教えてください

エクセルに配列数式、配列定数というものがあることを最近知りました。 エクセルのA1セルに={1,3,3}と入力し、A2セルに=COUNTIF(A1,{1,2,3})と入力すると、 A2セルに1と表示されます。A2には1以外の数字が含まれることは何となく理解できるのですが、どのような計算結果が算出されるのかが理解できません。また、A2の1以外の計算結果を表示させる方法がわかりません。 同様に、A1セルに={1,2,2,3}と入力し、A2セルに=COUNTIF(A1,{1,2,3})と入力した場合(これもA2セルに1と表示されます)のA2の計算結果と表示方法がわかりません。 ご教示をよろしくお願いいたします。

みんなの回答

回答No.4

配列とは、数学で言うところのベクトルあるいは行列だと考えてください。また、曖昧な言い方ですが、複数セルの集まりのようなものだと思ってください。 説明を始めるといろいろな要素があって、なかなか一言では言えないので、他の回答者さんのご説明も参照してください。 とりあえず、配列がどのようなものであるかを感じていただくために、次の操作をしてみてください。何が起こるでしょうか? 1.A1セルに「={1,3,3}」を入力する。 2.A1:C1のセル範囲を選択する。 3.続けて、キーボードのF2キーを押す。 4.続けて、Ctrl+Shift+Enterを押す。 5.A1セルをダブルクリックし、Enterを押すと、「配列の一部を変更できません。」というメッセージが出るので、Escキーでその状態を抜け出す。 6.A1:C1のセル範囲をクリア(delete)する。 7.A1セルに「1」を入力する。 8.上の2.と3.の操作をもう一度、実行する。 9.続けて、Ctrl+Enterを押す。 10.A1セルをダブルクリックし、Enterを押す。 COUNTIF関数について。COUNTIFは、「基本的には」その引数に配列定数を取らない関数です。そういう仕様です。 配列定数を取らないけれどもムリヤリ書いてやると、最初の数字以外は読み飛ばします。つまり「=countif(a1:a3,{1,2,3})」と書いていても、「=countif(a1:a3,1)」と同じ意味になり、「2」や「3」は無視されます。 なので、それでも配列定数を混ぜるためには、No.1さんのおっしゃっているとおり、SUMPRODUCT関数など配列を扱える関数と組み合わせることが必要です。次の2式は、同じ計算結果になります。 =sumproduct(countif(a1:a3,{1,2,3})) =sum(countif(a1:a3,1),countif(a1:a3,2),countif(a1:a3,3))

Eukaryote
質問者

お礼

引数に配列定数を指定できる関数とそうでない関数があることがわかりました。わかりやすい例を教えていただき、ありがとうございました。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.3

まずは日経21のEXCEL虎の穴をご熟読ください 私はこちらで基礎を叩き込みました あと、できれば私の過去答の全てを後参照ください きっと直ぐに私程度には すらすら書けるように なれるものと思います。 私自身片手間にほぼ2ヶ月程度で理解しましたから ただ、厄介でいまだに困らされる点が 幾つかあります。 それは、 →マイクロソフトが配列数式の仕様を  無断で細々と変えてくること。 →配列数式を未経験なエクセルには  ロックがかかってること。 →配列数式の計算結果を  次段の関数に渡す関係で  仕様と言うなのバグがあり、  INDEX構文で一旦、  なんちゃって定数配列に  変えてあげる必要がある。 →数学の配列演算的な空想力が  求められること。 →配列演算では、項目数をきちっと  合わせる必要があること などです。 この内、数学的云々は まあ配列を知らなくても、直感的に感じとれば行けると思いますが INDEXの方はかなり厄介です。 この構文を有機的にかける必要があり、 しかもその位置をマイクロソフトが 関数の使用変更に伴い 非公開でコロコロ変えてくるからです。 余談ですが このことを知っている人は この日本でも極少数だと思います。 まあ極意は伝えました あとは簡単なものでロックをはずし そのEXCELの表示されない 内部バージョンの仕様にしたがって INDEXをかけるべきと頃を探せるようになれば もうしめたものです。 きっと誰にもEXCEL作業ではヒケをとらなくなると思います。 まあ、さらにその先の関数結果の考察についての極意が まだまだあるのですが それはまた別の機会に ところで、今回の引数 ({1,2,3},1)も(1,{1,2,3})も実は正しいですよ。 ロックの外れた環境で試せば 楽しめると思います。 おっといい忘れてました 競るに表示される結果は常に一つ 対して、配列数式の結果はしばしば複数になりますよね どうやって結果を確認するかですが 数式バーで確認したい範囲を謎って PF9をおせば 結果が数式バーに表示できる範囲の長さならばですが 確認できます。 違う方法としては INDEXとROWを用いて 複数のセルに結果の一つ一つを表示する方法とかもありますがね。 まあ頑張ってください 配列数式の有用性が広く世に広まれば EXCELシートプログラマに開発の仕事以来が来るでしょうから ね、 p.s. EXCELで表に現れる結果を鵜呑みにしたらダメですよ 例えば、今回挙げられた例では A2は1と現れていると思いますが このA2の表示形式を ユーザー指定形式で ¨¨,¨¨,¨¨,¨¨としてみてください きっと目を疑うことになると思いますよ もしかしたら今までのEXCEL作業の危うさにうちひしがれる、 いや、人生観すら揺らぐかも? 見えているものが真実と 信頼できなくなるのですからね

Eukaryote
質問者

お礼

ページを紹介いただきありがとうございました。初心者なので教えていただいたことの全てを理解することができませんが、エクセルは奥が深そうですね。勉強のし甲斐がありそうです。

回答No.2

配列数式のとっかかりは「◆“達人”芳坂和行氏に学ぶ、エクセル(Excel)「配列数式」講座」のページで覚えました http://pc.nikkeibp.co.jp/pc21/special/hr/ しかし、基本的に作業列を使った方が計算が早く、そのExcelファイルを引き継ぐ人にやさしいです。

Eukaryote
質問者

お礼

ページを紹介いただきありがとうございました。少しずつ学んでいきたいと思います。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>A1セルに={1,3,3}と入力し、A2セルに=COUNTIF(A1,{1,2,3})と入力すると、 その数式では配列計算が出来ていないので、イメージしていた結果も得られません。 といっても、アナタがその式で一体「何を計算したかった」のかイマイチ不明なので、「これが正解です」を掲示する事もできないんですが。 とりあえず。 間違いのその1) >A1セルに={1,3,3}と入力し、 A2の式中でそのA1セルを参照していますが、そのやり方では配列定数の「先頭の1」が単独で参照されるだけです。配列定数(1と3と3)として呼び込めていません。 任意のセルに =A1 と数式を記入し、A1セルに記入した配列定数の中身を変えてみて、理解してください。 間違いのその2) >A2セルに=COUNTIF(A1,{1,2,3}) A2のセルの式の中でも配列定数{1,2,3}を使おうとしていますが、そのやり方では配列定数の「先頭の1」だけしか計算できていません。 間違いのその3) >A1セルに={1,2,2,3}と入力し、A2セルに=COUNTIF(A1,{1,2,3})と入力した場合のA2の計算結果と表示方法がわかりません そもそもCOUNTIF関数の1つ目の引数(範囲)には、配列を指定することはできません。セル範囲を指定できるだけです。そのセルに配列定数が記入されていた場合は、先に説明したように先頭の1つだけが参照されます。 間違いのその4) A1セルに1 A2セルに2 A3セルに2 A4セルに3 をそれぞれ記入します B1:D1セルを選択 =COUNTIF(A1:A4,{1,2,4}) と記入し、コントロールキーとシフトキーを押しながらEnterして配列入力すると、結果は1,2,0と現れます 縦1×横3のセル範囲に配列入力された3つの数式は、式中の横方向の配列{1,2,4}に対応する位置にある要素を使って計算します。 丁寧に書けば B1は =COUNTIF(A1:A4,1) C1は =COUNTIF(A1:A4,2) D1は =COUNTIF(A1:A4,4) をそれぞれ計算します。これが配列計算です。 #参考 1つのセルの中で =SUMPRODUCT(COUNTIF(A1:A4,{1,2,4})) と計算すると、上述のB1とC1とD1の1,2,0のそれぞれがSUMPRODUCTの中に計算され、合計の3が求まります。 このあたりの計算の流れは、「数式の検証」の機能を使って追跡し勉強できますので参考にしてみて下さい。

Eukaryote
質問者

お礼

質問がわかりにくくて、申し訳ありませんでした。配列を引数に指定できる関数とそうでないものがあることがわかりました。「数式の検証」の機能は計算の過程がわかって便利ですね。ありがとうございました。

関連するQ&A

  • 【EXECEL】 配列定数の使い方について

    配列定数が入力されたセルを、配列定数として、他のセルに挿入した数式から参照することは可能でしょうか? もし、可能だとすれば、どのようにすれば良いのか教えて下さい。 例えば、今やろうとしていることは以下のとおりです。 A1セルに、={1,2,3,4,5,6,7,8,9,10}、と入力し、 A2セルに、=AVERAGE(A1)、と入力する。 これにより、A2セルに平均値5.5を表示させたい。 このままやっても、A1セル参照値は1となるのか、 表示される平均値は、1になります。 参照の仕方が異なるのでしょうか...

  • 配列数式を用いたエクセルマクロの使い方

    セルA1に「=SUM((A1:A12=5)*(B1:B12=""A"")*C1:C12)」という風に数式を表示形式を文字列として入れておき、他のセルに、この計算結果を入れるたいのですが、マクロでどのようにすればいいか、ご存知のかたがいらっしゃいましたら教えてください。 ちなみに、使用したい数式(セルA1に入れているもの)は配列数式です。

  • Excel 配列数式

    Excelにて日付の2列x数行からなる表があります。 A列  B列 1 2008/2/1 0:00 2008/2/2 12:00 2 2008/3/1 0:00 2008/3/3 00:00 .. 集計セル: A列とB列を比較して、24時間以内の誤差である行数をカウントした結果を 集計セルに入力したいのですがどのようにしたら良いでしょうか? B列からA列を引いて-1以上1以下の場合を真として、その結果をカウントして 集計セルに叩き込めばよいと思いますが、思うようにできません。。 配列数式を使えば出来そうな気がしますが思ったような結果が得られ ません。 よろしくお願いします。

  • エクセル 数式

    Excelについて。 あるセルA1の設定されている数式(=SUM(E:E)など)を、 B1にコピーする方法は、ありますでしょうか? ※A1に入力されている数式をコピー貼り付けではない方法を探しています。 B1に、=A1とすると、=SUM(E:E)の計算結果が入力されてしまいます。 ゴール(表示される値)は同じですが。コピー貼り付けしか方法はないでしょうか。 お手数ですが、よろしくお願いします。 エクセル2007以上 VBAなら可能ですか?

  • エクセルで数式が働かなくなりますが?

    エクセルで数式を正しく入力して(例:=a1*b5+a2*b6+a3*b7)結果が反映されません。前回は正しく働いていた表で、あるセルの数値を変更すると、その変更を反映した計算結果が表示されるはずですよね。書式→セル→表示形式で確認するとちゃんと「数値」になっているのですが。これはどういうことでしょうか、解決方法を教えてください。

  • 配列数式での平均値

    こんにちは。 今、エクセルで配列数式を使って平均値を出す作業をしています。 列Aには男女別を示す1、2が入力されており、 列B以降にはいろいろなデータが入っています。 それらデータにおける男女別の平均値を出したいので 配列数式を使って求めるまでは良かったのですが、 どうやら、列B以降の空欄になっているセルも 0として計算されてしまっているようなのです。 (普通のaverageと同様に)空欄を数に入れないで計算させるには どのようにしたらよいのでしょうか? ちなみに今使っている配列数式は、 {=average(if(A1:A10=1,B:B10,""))} です。

  • EXCELで数式を見えなくしたい

     EXCELにおいて、入力した数式を 他人に簡単に見れないようにしたいんですが 【書式】→【セル】→【保護】→【表示しない】にチェック 【ツール】→【保護】→【シートの保護】 で、見えなくはなったんですが、これでは 数字を入力すら出来なくなってしまいました。 記入&数式計算は出来る状態で、数式の表示だけを 消す方法は何か無いんでしょうか?

  • エクセルの数式について

    エクセルで、たとえばセルA1からA10までの、いずれかのセルに「りんご」が入力されていたら「1」を、どのセルにも「りんご」が入力されていなければ「0」を表示させるには、どのような数式を使えばいいでしょうか。 B1に「りんご」を入力し、C1にその数式を入力したいです。 よろしくお願いします。

  • エクセルの数式を教えてください

    エクセルの数式を教えてください B3のセルに数式「=A3」を入れてA3と同じ入力内容を表示したいのですが、A3がブランクのときにB3のセルには「0」が表示されます A3がブランクのときにB3のセル表示もブランクにするにはどうすればよいのでしょうか?

  • エクセル2007 数式がそのまま表示される

    セルに「=10-(counta(A1:A5))」と言う数式を入力しました。 きちんと望み通りの結果の数字が表示されました。 上手くいくか分からなかったため、初めは新しくエクセルを開いて試していました。 上手く行ったため、数式をコピーして、必要だったシートに貼り付けました。 しかし、表示されたのは正しい数字ですが、セルの中身としては数式ではなく数字でした。 何度しても同じ結果でしたので、コピーでは手入力しましたが、「=10-(counta(A1:A5))」とそのまま表示されてしまいました。 セルの書式なども調整しましたが、結果は同じです。 どうしたら数式が反映されるようになりますか?

専門家に質問してみよう