Excel条件付きの和を求めたい

このQ&Aのポイント
  • Excel条件付きの和を求めるための式の立て方を教えてください。
  • Excel2007を使用している場合、D列のシリアル番号とL列の回数を元に、AN列の個数の合計をBI列に求める方法を教えてください。
  • 質問No7850523での回答に基づいて、Excel2007で条件付きの和を求める方法を教えてください。
回答を見る
  • ベストアンサー

Excel条件付きの和を求めたい

こんにちは。質問No7850523でお世話になりました。 http://okwave.jp/qa/q7850523.html このときのベストアンサーには以下の式を選びました =IF(D1<>D2,SUMIF(D:D,D1,AN:AN),"") この質問にもう一つ条件が付きましたので 解決方法をお教えください。 Excel2007を使用しています。 D列にシリアル番号が昇順で入っています。 L列に数字(回数)が入っています AN列に数字(個数)が入っています。 以下わかりやすく回数毎に改行してあります 実際は空の行はありません D-----L--AN---BI 0001--1--5----5 0001--1--2----2 0002--1--2----12 0002--2--3 0002--3--1 0002--4--6 0002--1--1----9 0002--2--5 0002--3--3 0003--1--0----8 0003--2--3 0003--3--5 0003--1--2----2 0003--1--6----6 同じシリアル番号で回数が1回の時はその個数 複数の回数の時はその合計個数をBI列に求めたいと思います このときの式の立て方をお教えください。 よろしくお願いいたします。

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

  • ベストアンサー
回答No.4

No.1 です。どうやら見ていると、条件付きというよりも、L 列が 1 になったら合計をキャンセルして、値を戻すという意味ですかね。で、合計の対象は、AN 列なんだと。そうであれば、次式。 BI2 =0+(l2=1) BJ2 =n(bj1)+bi2 BK2 =bi2*sumif(bj:bj,bj2,an:an) こういうのは始めから枝番号を振っておかないと、今後もいろいろ苦労しますよ。添付図を参照。値複写で数式を除去しておき、今後もレコードが増えたら、手入力などで番号を追加していくとよいでしょう。 他にも、できるだけ作業列を使うようにすると、簡単な数式のみで欲しい結果が得られます。 ゼロという値のみをセルの書式で非表示にすることもできます。具体的には、対象のセル範囲を選択した状態で、右クリックなどから「セルの書式設定>表示形式タブ>ユーザー定義>種類ボックス」に、「G/標準;-G/標準;」とか「[=0]"";G/標準」などを入力するだけ。

sherman
質問者

お礼

ご回答ありがとうございます。 作業列を作ると誤りが少なくなり、 横スクロールも無くなり作業がはかどりますね。 アドバイスありがとうございます。

sherman
質問者

補足

作業列で整理する考え方を教えていただきありがとうございます。 計算式を教えてくださった皆さんにも感謝します。

その他の回答 (9)

回答No.10

No.4・5 です。 No.4 では枝番号という言い方をしましたが、枝番号というか、要するに「一意な番号」を振る、ということです。BJ 列に番号を振った後であれば、仮に D 列の番号を削除したとしても、フィルタにおける複数列での絞込みなどによって、各レコード(行)が特定できる状態になっているのがお分かりかと思います。 >BJ2 =n(bj1)+bi2  のn(bj1)のnの意味を教えてください。 N 関数です。多分 number という意味だと思います。T 関数というのもあります。多分 text という意味だと思います。よかったらネットで検索してみてください。 N 関数は、数値はそのままの値に、文字列は「0」という数値にそれぞれ変換してくれる関数です。 No.4 の添付図では、BJ2 セルが BJ1 を参照し、それに BI2 の値を足しています。もしも「=bj1+bi2」という数式で計算しようとすると、BJ1 の文字列に数値を足すことになるため、「#VALUE!」というエラーとなります。これを回避するため、n をくっつけといただけです。 ですから代わりに、BJ2 に「1」という数値を、BJ3 以下に「=bj2+bi3」という数式を入力することにしても、全く問題ありません。 N 関数は、たまに便利なときがあります。例えば、表中のあるセルで、同じ表の別セルの数値を使って計算したいという場合、使おうとしているセルに文字列も入力したいというケースがあります。SUM 関数などでは文字列は無視してくれますが、一般の四則演算などでは、文字列が混ざるとエラーになってしまいます。そういうときに n をくっつけとけば、エラーになりません。 次の添付図は具体例です。「未定」の箇所をいつか数値で上書きすれば、直ちに計算結果に反映されるという仕組みです。なお「=N(B7*D7)」という数式にするとエラー回避できていないので、ご注意。

sherman
質問者

お礼

解説ありがとうございます。 ExcelにN関数というのが有るんですね。 初めて知りました。

回答No.9

No.3です。ちょこっと違ったので修正 L列は1000以下ではなく、1000未満でした。 =IF(L2<>1,"", IF(ISNA(MATCH(1,L3:L1001,0)),SUM(AN2:AN1000), SUM(AN2:INDEX(AN2:AN1000,MATCH(1,L3:L1001,0))))) に修正。適宜範囲は変更してください 作業列 MATCHとして BJ2セル =MATCH(1,L3:L1001,0) 下へオートフィル BIセル =IF(L2<>1,"",IF(ISNA(BJ2),SUM(AN2:AN1000), SUM(AN2:INDEX(AN2:AN1000,BJ2)))) 下へオートフィル L列が 1以外なら空白"" 一番下の1だったら 数式の入っている行を含み、下へ999行分のの合計 一番下ではないなら、次の1の一つ上までの合計

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.8

 回答:No.6、7です。  尚、L列の値が、D列において同じシリアル番号が上から数えて何回現れたのかを示す値だとしますと、BI1セルに入力される関数を次の様なものとしますと、L列の数値が無くとも、同じ働きをさせる事が出来ます。 =IF(AND($D1<>"",COUNTIF($D$1:$D1,$D1)=1),SUMIF($D:$D,$D1,$AN:$AN),"") 或いは =IF(AND(INDEX($D:$D,ROW())<>"",COUNTIF($D$1:INDEX($D:$D,ROW()),INDEX($D:$D,ROW()))=1),SUMIF($D:$D,INDEX($D:$D,ROW()),$AN:$AN),"")

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.7

 済みません、間違えました。  正しくは =IF($L1=1,SUMIF($D:$D,$D1,$AN:$AN),"") 或いは =IF(INDEX($L:$L,ROW())=1,SUMIF($D:$D,INDEX($D:$D,ROW()),$AN:$AN),"") です。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.6

 BI1セルに次の関数を入力されてから、BI1セルをコピーして、BI2以下に貼り付けられると良いと思います。 =IF($AN1=1,SUMIF($D:$D,$D1,$L:$L),"")

回答No.5

No.4 です。何度もすみませんが、言い忘れたことを補足します。BI 列は、次式でも構いません。BI 列の結果が TRUE または FALSE で表示されるようになるだけで、他の列は正しく計算されます。 BI2 =l2=1

sherman
質問者

補足

すみません。 BJ2 =n(bj1)+bi2 のn(bj1)のnの意味を教えてください。

回答No.3

下へ1000行分が検査対象 つまり、B列 1000以下として D2セルに =IF(B2<>1,"", IF(ISNA(MATCH(1,B3:B1001,0)),SUM(C2:C1001), SUM(C2:INDEX(C2:C1001,MATCH(1,B3:B1001,0))))) 下へオートフィル

sherman
質問者

お礼

早速の回答ありがとうございます。 実際に手計算してみたところあっています。 これで力わざから解放されました。

  • chonami
  • ベストアンサー率43% (448/1036)
回答No.2

ピボットテーブルでいいのでは?

回答No.1

質問文の BI 列の値が答えなのですか?その計算の方法をお知らせください。

sherman
質問者

補足

はいそうです。 L列が1だけの時はANの数字のまま L列が1からnまであるときはANの数字の和 です。

関連するQ&A

  • Excelシリアル番号別に数の和を算出するマクロ

    こんにちは。 Excel2007を使用しています。 D列にシリアル番号が昇順で入っています。 一つだけの場合も複数の場合もあります (D5に一つだけシリアル番号0002、D20からD27まで同じシリアル番号0006のように) AN列に数字が入っています。 D列の同じシリアル番号のAN列の数字の和を求めたいと思います AN5だけ、(これは合計とは言えませんが) あるいはAN20からAN27のセル内の数の和ように 合計をBJ列に出力したいです。 BJ5に6とか、BJ20に41とか。 約1万行に約1000のシリアル番号があるので手作業では 時間ばかり掛かってしまいます うまいやり方をご存じの方お教えください。 よろしくお願いいたします。

  • 《エクセル2000》条件にあった行のみ、数字の個数をカウントする?

    皆様、こんにちは。 A1~B20の範囲に数字と空白が混在しています。 「A列に数字が入っている行のみ、B列に入っている数字の個数をカウントする(A列に空白が入っている行はカウントしない。A列に数字が入っていてもB列に入っていなければもちろんカウントしない)」 …という式は作れるでしょうか。 合計はSUMIFを使えばいいのですが、同じ式をCOUNTIFには流用できないんですね(困惑)。 (↑これも以前ここで聞いて、教えて頂いたのですが) どうかどうか、よろしくお願いします。

  • 《エクセル2000》条件にあった行のみ合計する?

    A1~D20の範囲に数字が入っています。 うち、A列は数字と空白が混在しています。 「A列に数字が入っている行のみ、B列~D列を足し合わせ、さらにそれの20行分の和を求める(A列に空白が入っている行のB~Dは加算しない)」 …という式は作れるでしょうか。 自分でもSUMやらSUMIFやらを使ってトライしてみたのですが、どうもうまくいきませんでした。 よろしくお願いします。

  • 【Excel】4行ごとの和を集計したいです

    基本的なことなのかもしれませんが、方法がわからないので教えてください。 Excelの表で、A1の次はA5、A9というように4行ごとの数字の和を集計したいです。 今は、とても原始的な方法で、「=A1+A5+A9」という具合に足しているのですが、これですと数が増えてくると大変です。 また、A2から4行ごとに足したいこともあり、とても不便です。 そこで、行番号を取得して、4で割り切れるものだけ指定の数まで足していきますよ、という式を組み立てたいと思いました。 sumifと行番号を取得する関数と割り算のあまりを返す関数を組み合わせればできると思うのですが、どのように書くのが簡単でよいでしょうか? 私が、思うのは =sumif(A1:A100,MOD(ROW(),4)) としているのですが、これでよいでしょうか? また、A2から4行おきの場合は =sumif(A2:A100,MOD(ROW()+1,4))でよいのでしょうか? ほかによい方法があったり、そもそもこの式が間違っているのかよくわかっておりません。 ご指導をお願いいたします。

  • Excel 複数条件+”かつ”

    標題の通りです。 例えば、A1~A100に1~10までの数字が、B1~B100に11~20までの数字が、個数に関係なくランダムに入っているとします。 (1)A列の中で3以上7以下の個数を求めるには、COUNTIFで(7以下の個数)-(3以下の個数)で求めればいいですよね。(SUMPRODUCTを使う方法もあるみたいですが) (2)A=4 かつ B=15の個数を求めるにはSUMPRODUCTを使用すれば求まりますよね。 ここまでは、ネットで調べて理解しました。 ここからが本題です。 (1)と(2)を合体させて、A列の中で3以上7以下 かつ B列の中で11以上13以下の個数を求めるのにどうすればいいのかが分かりません。 A   B 1   12  4   11  4   17  5   13  6   20  3   14  答え:2個 てな具合で個数を求めたいのですが、色々と式を作ってみてもエラーになったりすべての値が0になったりで上手く行きません。 よろしくお願いします

  • 日付を条件としたsumif関数について

    お世話になります。 A列に2010/4/1から4/2・・・・・12/31の日付 B列には売上個数が入っています。 月別の売上個数を集計するために別表で D列に2010/4/1,2010/5/1・・・・2010/12/1を入力し E列で =sumif(A:A,"=month(D1)",B:B) としたのですが上手くいきません・・・ そこで、 1. この方法にはこだわらないので、良い方法を教えて下さい。 2. この方法のどこが悪いかを教えて下さい よろしくお願いします。

  • 複数条件での集計方法について(Excel2003)

    複数の条件で集計を行い、データの個数を表示させたいと考えてます。 対処方法をご教示下さい。 <例>     列A    列B   列C  列D 1 注文番号 メーカ名 タイプ  購入日 2  123     NEC   NOTE  2010/1 3  123     NEC   NOTE  2010/1 4  123     NEC   DESK  2010/1 5  456     HP    NOTE  2010/2 6  456     HP    NOTE  2010/2 上記の表を列A~列Dの集計により     列A    列B   列C  列D  列E 1 注文番号 メーカ名 タイプ  購入日 個数 2  123     NEC   NOTE  2010/1  2 3  123     NEC   DESK  2010/1  1 4  456     HP    NOTE  2010/2  2 列Eにデータの個数を表示 尚、集計の条件としては、列Aの注文番号が最優先の集計キー、次いで列B、列C、列Dとなります。 又、行数は約1500行前後です。 宜しくお願い致します。

  • エクセル Sumif関数の設定条件

    以下のような式を作成したとします。 =SUMIF(B:B,"2/1",I:I) ※B:B 列には日付、I:Iには 金額をそれぞれ入力。 上記のようにSUMIF関数の条件部分は、文字列で表記("2/1")するのが規則となっています。 しかし、日付(I:I)欄にはシリアル値が入力されています。それを検索するのになぜ文字列が使用できるのでしょうか。 ご存じの方いたら教えていただけないでしょうか。 よろしくお願いいたします。

  • 【EXCEL/必須条件とOR条件を組み合わせる】

    EXCEL2010です。 A列 B列 C列 D列 E列 背番号 ポジション クロス シュート スピード 1 MF 1 0 1 2 FW 0 1 0 B列がMFのとき、C列、D列、E列のどれかが1なら表示されるには どのような式にすれば実現できるでしょうか? ご教授願います。

  • 複数条件でのカウント

    データの個数のカウントで行き詰りましたので質問させていただきました。 複数条件で検索するのですが、その条件の中に AND と OR があります。 現状ではCOUNTIFSを足していって算出していますが、場合により条件が多くて とんでもなく長い式になってしまっています。 なんとか簡潔に短い式にまとめられないかと思いまして試行錯誤したり調べたり してみたのですが答えが出ませんでしたので質問に至りました。 現状では以下の様になっております。 A列・・・2ケタの数字 B列・・・数字・文字列の混合 データは約1000行あります。  このデータから、A列の 10 or 15 のデータで、 かつB列の 4 or 1_100 のデータの個数を求める式です。 =COUNTIFS(A1:A1000,C1,B1:B1000,D1)+COUNTIFS(A1:A1000,C1,B1:B1000,D2) +COUNTIFS(A1:A1000,C2,B1:B1000,D1+COUNTIFS(A1:A1000,C2,B1:B1000,D2) 条件を変えていろいろカウントしたいので、 C1~C2にA列の検索条件を入力するセルとし、 D1~D2にB列の検索条件を入力するセルとしております。 上記の式は条件がそれぞれ2個ずつとなっておりますが、 片方だけで6個までいく事もあり、その場合式がかなり長くなります。 これをどうにかして簡潔に短くまとめたいと思っております。 ご存知の方がおられましたらご教授下さい。 よろしくお願いいたします。

専門家に質問してみよう