プロが教えるわが家の防犯対策術!

お世話になります。
GoogleドキュメントのスプレッドシートにMS Excelシートを移植しようとしているのですが
数式の適用に躓いています。
 
Excel上では
 {=SUM(IF((G2:G62<4)*(G2:G62>0),30+IF(R2:R62,1,0),0))}
 {=SUM(IF(G2:G62={1,2,3},30+IF(R2:R62,1,0),0))}
 (以上Ctrl+Shift+Enterで確定した配列数式)
 =SUMPRODUCT((G2:G62>0)*(G2:G62<4)*30+(G2:G62>0)*(G2:G62<4)*(R2:R62>0)*1)
などのような数式で求まるのですが、(#自らの数式には頓着してません。)
Googleドキュメントのスプレッドシートで同じことを実現する数式が書けなくて困っています。
 
参照先のG2:G62、R2:R62の値は、数値(非負整数)または空白であることは確実に担保されています。
この条件で、2:62行のそれぞれについて、
  G列の値が、1、2、3のいずれか(0より大きく且つ4未満)である場合、
    且つ、
    R列の値が1以上である(0より大きい)(0や空白ではない)場合は、
      31を
    それ以外の場合は
      30を
  (G列の値が、1、2、3のうちのいずれでもない場合は無視(0))
  それぞれ加算した合計を求めたい。
以上が「やりたいこと」です。
暫定的に作業セルを設けて計算させているのですが、
実用上、作業セルの存在が編集効率を損ねている実感がある為、
ひとつの数式に纏めたいと考えています(他に理由はありません)。
 
ここでお願いしていることは具体的な数式のご教示なのですが、
代わりに、例えば、
「GoogleドキュメントのスプレッドシートでMS Excelの配列(CSE)数式や配列定数を実現する方法」
「Googleドキュメントのヘルプを補う解説」
などの日本語ドキュメントをご紹介頂くのも求める回答としては有難いです。
 
尚、Googleドキュメントを利用するのに必要なアカウントを既にお持ちの方にのみお願いするもので、
新たなID作成を求めるようなものでは決してありませんので、誤解なきよう。
 
以上、質問に不備不足等ございましたらご指摘ください。
ご面倒お掛けしますがよろしくお願いします。

A 回答 (1件)

=sum(arrayformula(if((0<G2:G62)*(G2:G62<4),arrayformula(if(R2:R62>0,31,30)))))


で良いかと思います。
グーグルスプレッドシートではCtrl+Shift+Enterのような操作はありませんので,そのまま入力します。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
ご教示頂いた数式にて望み通りのことが出来ることを確認しました。
また、MS ExcelにおけるCSE数式に代わる機能としてGoogleDoc.では
arrayformula()関数を使うのだということも(ヘルプを引いて)理解できましたので、
今後大いに役立てていけそうです。
今後ともよろしくお願いします。
本件は以上をもって解決とさせていただきます。

お礼日時:2012/02/06 16:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!