• ベストアンサー

Excelでの配列の書き方などについての質問です

Excelで、以下のようなセルにて計算を行いたいです。 ┏━┳━━┯━┓ ┃  ┃ A │.B.┃ ┣━╋━━┿━┫ ┃. 1┃. 100│. 1┃ ┠─╂──┼─┨ ┃. 2┃. 200│  ┃ ┠─╂──┤. 2┃ ┃. 3┃. 300│  ┃ ┠─╂──┼─┨ ┃. 4┃. 400│. 3┃ ┗━┻━━┷━┛ B2とB3の結合を行い、表が上記の様になっている場合、 =A1*B1 + A2*B2 + A3*B2 + A4*B4 といった計算をうまく行う方法はありますか? SUMPRODUCT関数を使用し挑戦してみましたが、 {B1;B2;B2;B4}と書いてみたところエラーを吐かれてしまいました。 配列の要素にセル番号を持ってくることはできないのでしょうか? 改善方法がありましたらお教えください。 また、上記の計算が行える他の記述方法等あれば教えていただけると助かります。 よろしくお願いします。

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

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

とりあえず簡易版の対処療法で。 D1セルを空っぽにしておきます D2セルに =D1 を入れます D1:D2を選んでコピーします B2(および結合されたB3)を選んで型式を選んで貼り付けを開始し,数式にマーク,「空白セルを無視する」にチェックを入れて,OKします。 作業を終えたらD2は消して構いません。 以上により,ご質問の計算は =SUMPRODUCT(A1:A4,B1:B4) で通ります。 ただし副作用として =SUM(B1:B4) は見た目とは違う結果になるので注意してください。 それから >配列の要素にセル番号を持ってくることはできないのでしょうか? 出来ません。

krtw39
質問者

お礼

ご返答ありがとうございます! 思い通りにできました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

C1セルに次の式を入力し下方にオートフィルドラッグします。 =IF(A1="","",IF(ROW(A1)=1,IF(B1<>"",A1*B1,A1*OFFSET(B1,-1,0)),IF(B1<>"",A1*B1+OFFSET(C1,-1,0),A1*OFFSET(B1,-1,0)+OFFSET(C1,-1,0)))) これで最終行には答えが表示されますね。答えをD1セルに表示されるのでしたらD1セルに=MAX(C:C)と入力します。

krtw39
質問者

お礼

ご返答ありがとうございます! OFFSET関数というものもあるんですね。 扱えるようになると便利そうなので勉強してみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルにおいての配列関数について

    エクセル の配列関数のSUMPRODUCT使用して このような式を書いた場合 SUMPRODUCT((条件1)*(条件2)*・・・(条件n)*(集計範囲)) =SUMPRODUCT((A1:A30=50)*(B1:B30=750)*(C1:C30=6600)*(D1:D30=210)*F1:F30) 集計範囲の行 いわゆるFの行の数字の中の一つのセルに 「3」などのカッコを使用した ものをいれると "#VALUE!" と表示され正しい答えが出ないのですが 解決方法を教えてください。 よろしくお願いします。

  • Excelの除算の和の方法について

    Excelの関数を用いて計算ファイルを作成しています。 例えば、 =SUMPRODUCT(A1:G1/A2:G2) とすれば、 =A1/A2+B1/B2+C1/C2+D1/D2+E1/E2+F1/F2+G1/G2 の意味となりますが、 「A1とB1」「A2とB2」を「セルを結合して・・・」数値を入れた場合、 結果は「#DIV/0!」となります。 結合した際の分母にくる「B2=空白=0」と認識しているためと推察しています。 これを改善して数値を出す方法はありますでしょうか。 計算式以外に文章等を入れ込んでいるため、セルを結合してセルの大きさを調整する必要があります。 これをしないと見た目が汚い書類になってしまいます。 ご指導の程、よろしくお願いいたします。

  • C言語の配列のコピーについて質問です。

    intを要素とする二つの配列a、bとその配列の要素数を受け取り、配列aのすべての要素の値を配列bにコピーする関数を定義し、その関数の機能を確認するプログラム作成するという問題について質問です。 (1)配列aを配列bに「先頭から順番に」コピーする関数を作成する (2)配列aを配列bに「後ろから順番に」コピーする関数を作成する ただし、配列の要素数(例では4)が変更されても処理できる関数を作成したいです。また、配列の要素の値は関数main()内で表示したいです。 [ヒント] (1)関数宣言の例 void array_copy(コピー元の配列, コピー先の配列, 配列の要素数) [実行結果の例] (1)先頭から順番にコピーする コピー前 a[0]: 1 b[0]: 0 a[1]: 2 b[1]: 0 a[2]: 3 b[2]: 0 a[3]: 4 b[3]: 0 コピー後 a[0]: 1 b[0]: 1 a[1]: 2 b[1]: 2 a[2]: 3 b[2]: 3 a[3]: 4 b[3]: 4 (2)後ろから順番にコピーする コピー前 a[0]: 1 b[0]: 0 a[1]: 2 b[1]: 0 a[2]: 3 b[2]: 0 a[3]: 4 b[3]: 0 コピー後 a[0]: 1 b[0]: 4 a[1]: 2 b[1]: 3 a[2]: 3 b[2]: 2 a[3]: 4 b[3]: 1 #include <stdio.h> void array_copy() から始めて int main(void) { とプログラムを作成したいのですが教えてください。

  • エクセル・単純に合計を出す・・

    表を作っています。 例えばセルを A1~A3,A4~A6,A7~A9 と結合させてそれぞれ数値を入力してます。 B列は結合無しでそれぞれ数値を入力しています。 A+Bの合計をC列に計算させます。 C1に関数を入力して、C2以降はコピーします。 単純に(A1+B1)にすると C1は正しく合計してくれるのですが コピーしたC2は(A2+B1)となってしまい Aが0として計算されてしまいます。 (A$1)と、してしまうと当然ですが C4以降の計算が狂います。 C4は結合されたA4~A6を見てほしいのです。 実際に作っている表は、もっと数が多いので 1つづつ計算では・・・ 何かよい方法はないでしょうか? よろしくお願いします。

  • 複数の条件を満たすセル数の合計は配列関数を使う?

      A列 B列 ------------- 1  1  2 2  1  1 3  3  5 4  1  7 5  4  8 6  1  4 7  7  5 8  5  6 9  1  1 10  9  3 上記の表でA列もB列も“1”であるセルの数を数えたいのです。 C列の1~10行目に   =IF(A1=1,IF(A1=B1,1,0),0) と計算式を入力・コピーしその合計を求めることができますが、 計算用の列を作らず、別のシート上のセルに 計算結果のみ表示させたいと思っています。 {=SUM(IF(Sheet1!A1:A10=1,IF(Sheet1!B1:B10=1,1,0),0))} 上記の計算式で一応計算できているようなのですが、 配列関数というのがなんなのか良く分からないのです。 これで大丈夫なのでしょうか? お詳しい方ご助言をお願いします。

  • MSエクセルで計算式のコピー

    SUMIF関数を使いたく、表を作成しC,Dセルを結合し 計算式を結合したセルに、例えば=SUMIF($C$3:$C$11,$B15,E$3:E$11) と記述し、同じ行のE,Fセルを結合しこの計算式をコピーすると 計算式が=SUMIF($C$3:$C$11,$B15,G$3:G$11)となってしまいます。 計算式が=SUMIF($C$3:$C$11,$B15,F$3:F$11)となって欲しいのですが、 コピーの仕方が間違っているのでしょうか教えて下さい。

  • VB4の配列情報をエクセルに貼り付けるには?

    VB4の配列情報をエクセルに貼り付けるには どうゆう記述をすればいいですか? 記述例を教えて下さい。 結合セルにも貼り付け出来ますか?

  • エクセルについての質問です。

    エクセルについての質問です。 例えばこのような表があります。      A列   B列 1   太郎   大阪 2   太郎   大阪 3   太郎   東京 4   次郎   大阪 5   次郎   東京 6   次郎   東京 7   次郎   愛知 B列にある項目の重複を除いた件数を知りたいのですが、 A列を考えないと「=SUMPRODUCT(1/COUNTIF(B1:B7,B1:B7))」で「3」と計算できます。 今計算したいのはA列を条件として1つの式で別セルに表示させたいです。 太郎と指定すると→2 次郎だと→3 いろいろ関数を組み合わせてみましたが思い通りにできません。 どなたかご教授願います。 よろしくお願いいたします。

  • エクセルの質問

    いつもお世話になっております。 エクセルの関数について質問させていただきます。 使用しているバージョンは2007です。 セルに連番をを入力し、途中で行の削除を行った場合でも連番が自動で修正されるようにしたいため、ROW関数を使用して表を作成しました。 具体的には、 A3セルから連番をふりたいので、A3セルに「=ROW()-2」と入力しましたが、A3、A4のセルを結合しているため、1、3、5、・・・と番号がふられてしまいます。 結合したセルにも連番を振るにはどうすれば良いでしょうか? ちなみに結合は2つのセルの結合のみです。 どうぞよろしくお願いします。

  • エクセルの配列

    エクセルの配列を使用しての関数がうまく出来なくて困っています。    A   B  C 1  1  1  東京都墨田区 2  1  1  東京都神奈川区 3  1  2  東京都杉並区 4  1  2  神奈川県横浜市 5  1  3  神奈川県川崎市 6  1  3  東京都多摩市 7  2  1  岩手県 8  2  1  大阪府 9  3  2  兵庫県 10  3  2  京都府 と並んでいます。 ここでA列=1 且つ B列=1又はB列=2 且つ C列が"東京都"という文字を含んでいる の総計を計算したいのですが(上の状態ならば「3」) {=SUM(SUMPRODUCT(IF(A1:A10=1,1,0))*(IF(OR(B1:B10=1,B1:B10=2),1,0))*(ISNUMBER(FIND("東京都",C$1:C10))))} と関数を入れても正しい値が出ません。どこがおかしいのでしょうか? 作業列を使わずに求めたいです。 どなたかご教授宜しくお願いします。

専門家に質問してみよう