• ベストアンサー

配列数式?【Excelでの計算式について】

クリックありがとうございます。 Excelで、セル3つおきの数値の合計を出したいのですが うまくいかないので、おわかりになればお教えください。 表は、以下のような内容で、3列一組が1日の情報でこれが100日分ほど続くとします。 最後の合計欄に、日々の販売数・金額・率それぞれの合計を出したいのです。 セル   A     B     C         販売数  販売金額  購買率(%) ・・・ 以前の質問を探してみて、配列数式というのが当てはまるかなと思い 試してみたのですが、計算式を入力したセルには「0」と出てしまいます。 ●販売数・販売金額・購買率は、それぞれ計算式を入れて出しています。 ●項目によっては、別シートから合計を出しているものもあります。 ●使用しているパソコンは、Macです(関係ないかもしれませんが) 以上、説明がわかりにくいかとは思いますが、お教えいただければ幸いです。 宜しくお願い致します。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんばんは。 割り込み失礼します。 >3日間のうち1日でも人数が入らずにC) のセルの表示が#DIV/O! になっていると計算式入力後「#DIV/O!」と表示されてしまうようなのです。 ところで、人数は、どうやって入れているのか、いったい、どんな数式なのか、はっきり言って分かりません。というのは、3日単位の項目が突然出てきているからです。きちんとした実際の入れている数式をひとつでも出して説明してくれば、すでに解決していただろうと思います。 >C)購買率  =A/1日の客数 せっかく、詳しい説明を補足でしていただいても、回答者としては、その内訳や論理ではなくて、実際の"セルの位置関係"と"数値"や"数式"の内容が必要なのです。 一般的にこのような質問の場合、スモール・サンプルとして、全体が想像できるような列と行を示すのが普通なのです。 #4 の回答の補足の >求めたかったものが計算されるのですが「#DIV/O!」が残っている状態では計算はできないのでしょうか・・・ まず、基本的に、エラー値を出さないようにして計算することです。「#DIV/O!」を出しっぱなしではだめです。 また、 >見栄えが悪いので「IF(ISERROR(・・・」で見た目は空欄になっていますが・・・ のISERROR(式)の真の場合に、「""」を置いていると、これも、配列数式では、#VALUEになります。 例えば、   A列   B列     C列     D列    E列    F列 1 販売数  販売金額  購買率(%)  販売数  販売金額  購買率(%) 2 数字   数字     数字    数字    数字    数字 となっている(つまり、繰り返しになっている)なら、 仮に、「"" 」で見えなくなっていても、 =SUMIF($A$1:$Z$1,"販売金額",$A2:$Z2) =SUMIF($A$1:$Z$1,"販売数",$A2:$Z2) というようにして計算は可能です。(非配列数式) これは、1行目の"販売金額"をキーワードにして、該当する同じ列のセルの合計を出しています。これは、「""」(長さ0の文字列)を無視して合計を出すように出来ます。 しかし、皆さんの書いた配列数式を活かすのでしたら、 書式で、「0」が存在しないのでしたら、書式のユーザー定義の中で、 「#,###;;」セミコロン(;)を二つ付け足す。 パーセンテージなら、 「0%;;」 このようにします。   =IF(ISERROR(A/1日の客数),"",A/1日の客数) ←前の数式      ↓   =IF(ISERROR(A/1日の客数), 0 ,A/1日の客数) として、エラーの条件が真になった時に、「0」を出すようにすれば、皆さんの数式が活きます。

a85552
質問者

お礼

ご回答ありがとうございました。 #6様 上記でご回答いただいた通り「エラーの条件が真になった時に「0」を出すように・・・ という方法で試してみたところ、無事に計算もでき、表を完成させる事ができました。 それまでの回答者様たちの数式でしか試しておりませんが #6様がはじめに教えてくださった方法でも試してみたいと思います。 ありがとうございました。 ==今回の質問にご回答くださった皆様== 何度か指摘されながらも最後までわかりやすい質問・補足ができず申し訳ありませんでした。 無事に、表を完成させる事ができました。 ありがとうございました。

a85552
質問者

補足

ありがとうございます。 まず、補足ですが、人数はひとつ前の補足に書かせていただいた通り 日々手入力、ですが、説明不足でわかりにくかったですね・・・ 人数に関しては、計算式は全く使わずに、1,000人なら「1000」と手入力で入れていきます。 全体を想像できるようなサンプルの提示できておらず わかりにくい質問となってしまい申し訳ありません。 次回からの質問の際は、もっと気をつけて書き込んでいきたいと思います。

その他の回答 (5)

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

#4です。 A2:C2にそれぞれ1、、2,3をいれ、D2:I2は空白の場合 =SUM((MOD(COLUMN(A2:I2),3)=1)*(A2:I2)) は3になりました。 D2:I2は空白で有るにもかかわらず。 ご存知と思いますが、私のXTYの見出しははい列数数式に使ってませんから、関数式には関係ないです。 だからDiV0のエラーが出るというのは、別のことでしょうか。 MODの演算対象になっているCOLUMN(A2:I2)もゼロになりませんし、0でない、3で割っていますので??。 主要な部分について、具体的に、行と列の表現を使って、実例を挙げて状況を説明してください。 (良くこの質問コーナーで、エクセルの関数式の質問には、質問者が文章(あいまいになりやすい)で表現し、回答者が仮定の実例を上げているケースが頻見されるが、逆ではないかと思ってます。)

a85552
質問者

補足

ご回答ありがとうございます。 imogasi様のおっしゃる通り、確かに質問者が仮定の実例を挙げるべきですね。 その方が、回答する方も答えが導きやすいでしょうし、 何よりも質問する側の最低限のマナーですよね、申し訳ありません・・・。 わかりにくいかとは思いますが、以下に実例を挙げてみますので 見ていただければと思います。宜しくお願い致します。 ================================================================================ 今回合計を出したいものを 縦列ABC とし、それより前のセルにある商品名・単価は区別する為に 縦列※、●とする。 ※ 商品名 ● 単価 【A 販売数 B 販売金額 C 購買率】・・・〈A' 販売数合計 B' 販売金額合計 C' 平均購買率〉 【 】内が日々入力・算出する項目で、数十日分【 】が続いた後に〈各項目の合計と平均〉が来る。 上記が1行にある情報で、それが商品数分数百行下まで続く。 A)販売数  日々の売上数を手入力、セルの書式は「数値」に設定 B)販売金額 販売数×単価 =$●*A        セルの書式は「通貨」に設定、Aに入力がないときは¥0と表示されている。 C)購買率  =A/1日の客数        1日の客数は日々手入力、セルの書式はユーザー定義で「#,##0"人"」と設定している。        日々客数を入力するので、客数カウントできない明日以降の分に関しては、セルに「#DIV/O!」が表示されている。        セルの書式は「パーセンテージ」に設定。        実際は、見栄え状「#DIV/O!」を見せないようにしたいので        =IF(ISERROR(A/1日の客数),"",A/1日の客数)        を使用して空白の状態にしている。 ================================================================================ 今、ABCをごく単純な数字で試しに計算してみたのですが →(A=10、B=20、人数を1000人としてCを計算)×3日分 3日間とも人数も入力して C)購買率を「X%」と出してあげれば お教えいただいた計算通りでABそれぞれの合計が出たのですが 3日間のうち1日でも人数が入らずにC) のセルの表示が#DIV/O! になっていると 計算式入力後「#DIV/O!」と表示されてしまうようなのです。 なので、実際使用している表で、お教えいただいた式をしようしてみるときに すでに入力済の日までの分(例えば、1月1日から昨日までの分)をCOLUMN(A2:l2)で選択してあげれば 問題なくそれぞれの合計が出ます。 なんともわかりにくい説明になってしまい申し訳ありません。 また、聞きたい事はそこじゃないのに・・・ということがあればご指摘ください。 宜しくお願い致します。

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

配列数式で簡単にできます。 簡単な例にしますので、まず下記を納得して、自分の場合に修正するには、どこが変わるか、考えてください。 配列数式は()*()は()がTRUEなら1と、FALSEなら0 と考えてよい。FALSEの場合は、0を掛けられるので0になり、足されないのです。それらを列数文だけ合計(SUM)されるという 理屈です。 ーーー 例データ A1:I2に X Y Z X Y Z X Y Z 1 2 3 4 5 6 7 8 9 第1行目は見出し、XYZ,XYZ、XYZの3回繰り返しのつもり。 計算には関係なし。 データはA-Iへ1-9を入れる。どんな数を入れてよい。 ーーー 式は 見出しがXの3列の和 =SUM((MOD(COLUMN(A2:I2),3)=1)*(A2:I2)) と入れてSHIFT+CTRL+ENTER同時押し。 同時に3キーを押してますか。 結果の値12 A列+D列+G列=>1+4+7=12 ーーー 見出しがYの3列の和 =SUM((MOD(COLUMN(A2:I2),3)=2)*(A2:I2)) と入れてSHIFT+CTRL+ENTER同時押し。 結果の値15 ーーー 見出しがZの列の和 =SUM((MOD(COLUMN(A2:I2),3)=0)*(A2:I2)) と入れてSHIFT+CTRL+ENTER同時押し 結果の値18 ーーー 結果

a85552
質問者

お礼

ご丁寧回答、ありがとうございました。 ただ、あと一歩のところでつまづいてしまいました。 もしおわかりになったら、もう一度アドバイスいただければ幸いです。

a85552
質問者

補足

上記の方法で試してみたところ、計算が可能でした。 ただ、XYZ, XYZ ・・・の部分なのですが、既に完成された表ではなく 日々入力を行っているので、例えばその日の数字がわかるまでは 計算式のみが入っており、表の中では「#DIV/O!」となっているセルもあります。 見栄えが悪いので「IF(ISERROR(・・・」で見た目は空欄になっていますが・・・ その「これから入力していくと数値が表れる」セルを除いて上記の方法で計算をすれば 求めたかったものが計算されるのですが「#DIV/O!」が残っている状態では 計算はできないのでしょうか・・・ 皆さんせっかくご丁寧に回答していただいているのに、なかなか解決せずに申し訳ありません。 こちらでも色々試してみますが、またアドバイスいただければと思います。 宜しくお願い致します。

  • keirika
  • ベストアンサー率42% (279/658)
回答No.3

A1:I1にデータが入力されていて、合計をJ1、K1、L1に求めると仮定します。 J1は=SUMPRODUCT(($A$1:$I$1)*(MOD(COLUMN($A$1:$I$1),3)=1)) K1は=SUMPRODUCT(($A$1:$I$1)*(MOD(COLUMN($A$1:$I$1),3)=2)) L1はJ1とK1の数値を使用してください。 ちなみに最大256列の為、84日分が限界だと思います。 EXCEL2003使用

a85552
質問者

お礼

ご回答ありがとうございます。 補足に書いた通り、残念ながらうまくいきませんでした・・・ 補足をご覧になられて、もしこれは?と思い当たる点があるようでしたら またアドバイスいただければ幸いです。

a85552
質問者

補足

ありがとうございます。 お教えいただいた計算式で試してみましたが、やはりEnterを押すと「0」となってしまいます。 セルの書式設定などにも問題があるのでしょうか・・・? ちなみに ●販売数=数値・販売金額=通貨で表示 ●販売数・販売金額ともに、別シートで細かく表にしてあるものを まとめてあります。(=’Sheet1’A1:A5 のように) ●他の質問で探した際にみかけたようにcontrol+shift+Enterをすると #VALUE!となってしまいます。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

D列に1,2,3と3行おきに同じ数値をセットすれば =SUMIF(D1:D99,1,A1:A99) のようにしてD列の値が1の行のA列の集計が可能です。 上記以外だと =SUM(IF(MOD(ROW(A1:A99),3)=1,A1:A99)) としてCtrl+Shift+Enterで配列数式にする。 ※上の例はA1,A4,A7...を集計します。A2,A5なら=2、A3,A6なら=0としてください。 上記を配列数式以外で行いたいなら =SUMPRODUCT((MOD(ROW(A1:A99),3)=1)*1,(A1:A99)) とすれば計算可能です。 SUMIF関数:条件付集計関数です。 ROW関数:カッコ内のセルの行番号を表示します。 MOD関数:数値を引数で割った余りを表示します。 SUMPRODUCT関数:範囲の積の和を集計します。 範囲が条件の場合、1を掛けることで正しい場合に1、異なる場合に0に置き換えて計算します。

a85552
質問者

お礼

ご回答ありがとうございました。 補足の通り、こちらの説明不足で失礼致しました。

a85552
質問者

補足

ありがとうございます。 すみません、私の説明不足でした。計算したいのは、例えば A1+D1+G1+J1・・・ B1+D1+G1+J1・・・ です。 でも、お教えいただいた式も他の表を作成する際に利用できそうです。 #1さまのご回答への補足で、補足し忘れたありましたので こちらで失礼します。 購買率の合計・・・確かに、そうですね。 購買率は、平均を出しますので、販売数を使用して算出しますので 今回の質問へは直接関係ありませんでしたね、たいへん失礼致しました。

  • dial8675
  • ベストアンサー率26% (42/159)
回答No.1

excelで255列以上扱えましたっけ? 3つ目の、購買率の合計って何か意味があるんですか? 各セルには数式にしろ何にしろ値が入っているのなら、きっと数式が間違っているんだと思うんです。

a85552
質問者

お礼

ご回答ありがとうございました。

a85552
質問者

補足

>excelで255列以上扱えましたっけ? すみません「100日ほど続く」は例えです。 確かに列は256列以上扱えませんよね、失礼致しました。

関連するQ&A

  • エクセルの数式が計算しなくなった。

    会社のパソコンでエクセルに数値を打ち込むのですが、打ち込んだ値の合計がでる、数式の入ったセルがあるのですが、ある日突然でなくなりました。数式は入っているのにです。 誰かが何かしたのか、変なボタンを押してしまったのか、原因もわかりません。 セルによっては、計算をしているセルもあって、その行だけ計算しないのです。しかもそのワークシートだけでなく、原紙も同じようになっているのです。会社の規則で、データをUSBに入れて自宅でするとかは、無理なのですが、困っているので、相談しました。よろしくお願いします。

  • エクセルの簡単な計算式で・・・・

    初心者です。エクセルの表で、計算式・・縦合計の数式を 例=SUM(A5:A35)と入れており、その上部のセルに毎月異なる数値を打ち込んで自動計算していたのですが、先月から数値を打ち込んでも合計数値が変わらなくなってしまいました。(前月の合計数値のままです。) 合計数式の入ったセルをダブルクリックすれば正しい合計数値が現れるのですが、膨大な数の数式が入っている為、非常に時間がかかります。なぜこのようなことになったのかがまったく解りません。 どなたか以前の様に自動計算される方法を教えてください。 よろしくお願いいたします。

  • Excelで配列数式を使わずにとびとびの集計をしたいのですが

     ご覧いただきありがとうございます。Excelで、下記のような条件で集計を行いたいと思っています。配列数式を使う方法は考えついたのですが、できれば配列数式を使わず、作業セルもマクロも使わずに普通の関数式で集計したいのです。どなたかおわかりになる方がいらっしゃいましたら、よろしくご教示をお願いいたします。 (条件)  ○4行一組のデータのそれぞれ1行目の数値を足し合わせる。  ○ただし、各組の1行目が空欄の場合は2行目の数値を使う。3行目・4行目は関係なし。  ○データの先頭はA4で、データ数は一定していない。 (考えついた式) {=SUM(IF(MOD(ROW(A4:INDIRECT("A"&ROW()-4)),4)=0,IF(A4:INDIRECT("A"&ROW()-4)>0,A4:INDIRECT("A"&ROW()-4),OFFSET(A4:INDIRECT("A"&ROW()-4),1,0))))}  よろしくお願いいたします。

  • 配列数式で平均を出すと空欄が0で計算されてしまう

      A B C D 1  1 2 1 {=AVERAGE(IF($A$1:$A$4=$C1,B$1:B$4))} 2  1 4 2 {=AVERAGE(IF($A$1:$A$4=$C2,B$1:B$4))} 3  2 6 4  2 8 上記のような数値、数式ですと、 B列すべてに数値が入力されているため、問題なく計算するのですが、 例えば、B2のセルを空欄にすると、空欄を0としてしまい、 D1の計算結果が1となってしまいます。 D1の数式を=AVERAGE(B1:B2)としますと、空欄は空欄として扱い、 計算結果は2となります。 配列数式を使った場合にも、空欄を空欄として扱い、 計算結果が2となるような方法はありませんでしょうか。 よろしくお願いします。

  • 配列数式での平均値

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

  • 配列数式って何ですか??

    きのうは、ある列において偶数行だけの合計を求めたいときの計算式を教えてもらいました。 数式は以下のようになるそうです。 {=SUM(IF(MOD(ROW(A1:A10),2)=0,A1:A10,""))} (ありがとうございました。) しかし、そこで出てきた「配列数式」というものが何なのか分かりません。上では{}でくくられた部分だという事はわかるのですが、どうして一番初めと終わりに{}があるのか、たとえば比較として、上において{}がない数式ではどのような計算がされてしまうのでしょうか。 また、{}の位置がSUMの後にあるとき、 =SUM{(IF(MOD(ROW(A1:A10),2)=0,A1:A10,""))} なんかはどんな計算をしていることになるのでしょうか。 配列数式の計算手順がイメージできないのです。 どなたか教えて下さい。

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

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

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

    エクセルの数式で質問です。 例えば合計の水が1500ml必要だとして、それを1Lと200mlに分けるとします。 A1のセルに合計数の1500ml A5に1Lの本数 A6に200mlの本数 が入るとしたら、 A5が1本、A6が3本という値にしたいです。 また、1900のような数値の場合 A5が1本、A6が5本ではなく A5が2本、A6が0本 になるような計算式にしたいのですが、どのような数式が入りますでしょうか。 あまりエクセルに詳しくなく、自分で調べてみたのですが・・・わからないままです。 わかる方がいらっしゃれば、ご回答お願い致します。

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

    エクセルに配列数式、配列定数というものがあることを最近知りました。 エクセルの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の計算結果と表示方法がわかりません。 ご教示をよろしくお願いいたします。

  • Excel2000で数式を配列にしてセルに放り込むと計算されない

    一定の法則で作成されて数式をセルに放り込む場合、 (1)のようにループさせると非常に時間がかかりま した。(実際の数式セルはもっとたくさんあります。) それで数式を一度、(2)のように配列に入れて放り 込んだところ約1/10の時間で処理はすみました。 ただ、放り込まれた数式が計算されずに式のまま表 示されてしまいます。 セルをダブルクリックして、その後、リターンを押すと計算され ます。 これを自動的に計算させることはできないのでしょうか? (1)    For i = 1 To 3      For j = 1 To 10        Cells(i, j).Formula = "数式"      Next j    Next i (2)    myFomula(3, 10) = "数式" '← この中に数式を入れる。    Range(Cells(1, 1), Cells(3, 10)).Formula = myFomula

専門家に質問してみよう