• ベストアンサー

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))))}  よろしくお願いいたします。

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

データが何行目まであるかわかりませんが、仮に100行とした場合、 =SUMPRODUCT((MOD(ROW(A1:A100),4)=0)*((A1:A100)))+SUMPRODUCT((MOD(ROW(A4:A100),4)=0)*(ISBLANK(A4:A100))*(A5:A101)) でできないでしょうか。

akeem2003
質問者

お礼

 早速のご回答ありがとうございます。はじめの2つのA1をA4にして試してみたところ、希望どおりの動きをしてくれました。  私もこういうスマートな式をかけるようになりたいです。どうもありがとうございました。

その他の回答 (2)

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

こんばんは。 元の式を、ほとんどそのまま移植してみました。 =SUMPRODUCT((MOD(ROW($A$4:INDIRECT("A"&ROW()-4)),4)=0)*(A4:INDIRECT("A"&ROW()-4)))+=SUMPRODUCT((MOD(ROW($A$4:INDIRECT("A"&ROW()-4)),4)=0)*ISBLANK($A$4:INDIRECT("A"&ROW()-4))*($A$5:INDIRECT("A"&ROW()-3))) ただし、 >できれば配列数式を使わず、 という条件は、どなたの式も満たしておりません。配列確定をしないだけで、SUMPRODUCT を使えば、その引数は、配列になっています。補助列を使ったほうが、修正は利き易いとは思いますが。

akeem2003
質問者

お礼

 ご回答ありがとうございます。私が意図したのは、「Ctrl+Shift+Enter」なしで確定できる関数式ということなんです。  自分以外の人にもシートを配布して使ってもらうので、「このセルをいじったら、確定のときは Ctrl+Shift+Enter を押してください」とか、「行挿入したら補助列の条件式をコピーして貼り付けてください」というような説明は極力少なくして、集計エラーをなくしたいのです。質問文の説明が足りず申し訳ありませんでした。

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

A4:B15に(数字はB列です。OKWAVEではA列のようになるが注意お願い) A列  B列 a 2 1 1 1 b 3 2 2 2 c 4 3 3 3 とする 答えを出すセルに =SUMPRODUCT((B4:B15)*(MOD(ROW(A4:A15)+4,4)=0)) で結果は 9 B列 X (行数+4の4で割ったあまりが0かーー>Trueの行は1、False 行は0としてエクセルは計算する)==>第4行から15行まで掛け合わせる をやっていることになります。 質問の配列数式もMODを使うと、質問記述「考え付いた式」よりずっと簡単になります。

akeem2003
質問者

補足

 早々のご回答ありがとうございます。お示しいただいた式で試してみましたところ、先頭の2、あるいは3、4を削除した場合の答が8になってほしいのですが、それぞれ7、6、5となりました。A列にa、b、c、B列に数値を入力して試したのですが、試し方に間違いがあるのでしょうか。

関連するQ&A

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

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

  • 1行おきのセルの合計数式結果が0になってしまいます。エクセル

    1行おきのセルの合計数式結果が0になってしまいます。エクセル データ範囲がE2からU117あり、E列のE2から1行おきに数値E116までを合計するため E118に次の数式を入力しました。 =SUM(IF(MOD(ROW(E2:E117),2)=MOD(ROW(E2),2),E2:E117)) Ctrl+Shift+Enterすると結果が0になってしまいます。 指定の行には数値以外に「-(ハイフン)」や、範囲行に数式が入っていたりするからでしょうか?   E 2   50  ←足したい 3  数式 4   -  ←足したい 5  数式 ・     ・ 117  150  ←足したい 118  数式 119  =SUM(IF(MOD(ROW(E2:E117),2)=MOD(ROW(E2),2),E2:E117))

  • 配列数式について

    A     B 2007/9/1  10 2007/9/2  11 ↓ 2007/9/30  9 上記のように入力されています。 9/1~9/5までの金額を集計します。 配列数式を使用してやって見たのですが うまくいきません。よろしくご指導お願いいたします。 {=sum(if(A2:A31>=2007/9/1)*(A2:A31<=2007/9/6),B2:B31))}

  • 配列数式がうまくいきません

    現在、部品の管理をする為に配列数式をたてて行っています。 集計表にのセルに以下のような式が入っています。 {=SUM(IF($M$10:$M$500=200711,IF($S$10:$S$500={10,11},$T$10:$T$500,0)))} M列:客先の希望納期(2007年11月) S列:こちらの納品月(10月、11月) T列:納入数量 今は自分で行っておりますので年が改まった場合などに式(希望納期月)を書き換えておりますが、担当者が変わると配列数式を知らない方が行うこともありえるので、あるセル(A1)を参照する形で式を以下のように変更してみました。 このようにすればA1のセルの部分を変更するだけでいけると考えました。 {=SUM(IF($M$10:$M$500=VALUE(A1)&11,IF($S$10:$S$500={10,11},$T$10:$T$500,0)))} しかしながら、この式ではうまく行きません。 この計算式のどこがまずいのでしょうか。 よろしくお願いいたします。

  • 保存をすると数式が勝手に配列数式になってしまいます

    やりたかったのは、次のような処理です。 1.現在のセルから見て、1行上のセルを参照します。 2.1行上のセルの中身が、""(空白)であれば、現在のセルの中身も""(空白)に、そうでなければ、1行上のセルの中身に1を足した数を入力します。 そこで、以下のような数式を入力いたしました。 =IF(OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())), -1, 0) = "", "", OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())), -1, 0) + 1) 結果は、成功でした。 ところが、この数式を入力したファイルを保存すると、次回開いたときに、 {=IF(OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())), -1, 0) = "", "", OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())), -1, 0) + 1)} と、勝手に{}で数式が囲まれてしまい、結果として、セルにはエラーが表示されてしまいます。 この原因は、何なのでしょうか? よろしくお願いいたします。

  • Excel配列数式 行毎、列毎、の集計

    恥を忍んで質問します 2次元の配列数式結果を発生させる式を得た時 此を 行毎、列毎、 で、集計して、1次元に集約するには どうすればよかったでしょうか? 昔はやっていたのですが 過去歴にもうなく やり方を忘れてしまい 踠いています どうぞお助けください

  • 配列数式がわかりません。

    {=SUM(IF(E4:E18="福岡",G4:G18,0))} という式で正しい答えは出せたのですが、SUMのところをaverageに変更し平均を出そうとしても違う答えが返ってきます。 maxに変更したときは正しい答えが返ってきました。使えるものと使えないものがあるのでしょうか??? 配列数式がいまいちわかりません。よろしくお願いします。

  • 3千行以上あるExcel表の一つの列を配列数式に

    3千全行以上あるExcel表の一つの列を配列数式にしたいです。 {=SUM(IF(A:A="みかん",B:B,))}のようなやつ。 色々試しましたが、配列数式を使わないと出したい値を出せませんでした。 3千行あるのですが、めちゃくちゃ重くなります。 重くならずに済む方法はありますでしょうか。 やはり配列数式を使うとしょうがないのでしょうか。

  • エクセルの1行おきの集計

    エクセルで1行おきの集計をしています。   A 1 1 2 2 3 1 4 2 5 関数A(A1とA3の合計)(合計2) 6 関数B(A2とA4の合計)(合計4) 関数A SUM(IF(MOD(ROW(A$1:A$4),2)=1,A$1:A$4,0)) 関数B ???????????????????? 関数Aはうまくいっているのですが、 関数Bの設定がよくわかりません。。。 設定方法を教えて下さい。

  • 配列数式について

    SUMIF関数は、参照先のブックを閉じると#VALUEになってしまいますよね? そうならない為には配列数式を使用すれば良い、とネットで見たのですが 金額 種別 500 A 200 B 300 B 300 A 例えば上記のような参照先のAの合計金額だけを求める場合、 SUMIF(範囲,検索条件,合計範囲) これを {=SUM(IF(範囲=検索条件,合計範囲)} に直してみると、確かに計算はできたのですが、再度式をクリックしてEnterを押すと 0になってしまいます・・・なぜでしょうか。 わかりにくくてすみません、よろしくお願いします。

専門家に質問してみよう