- ベストアンサー
エクセル間数式で未記入判定の総合計
- エクセルで特定の条件下での未記入のデータの総合計を求める関数式を教えてください。
- A列にデータが入力され、B列に数字が入る場合、B列の未記入行のA列の合計をC列に表示する方法を知りたいです。
- エクセルの関数を使って、特定の条件下での未記入データの総合計を求める方法を教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
C1000セルまで入力し、A1001:C1001セルには何も入力しないとして そのまま数式に表わすと C1000セルに =IF(B1000="","", SUMIF(B1001:B$1001,"",A1001:A$1001)+A1000 +SUMIF(B1001:B$1001,"<>",A1001:A$1001)-SUM(C1001:C$1001)) 上へオートフィル でよくよく数式を眺めると C1000セルに =IF(B1000="","",SUM(A1000:A$1000)-SUM(C1001:C$1001)) 上へオートフィル
その他の回答 (5)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! ご希望の関数でなく、VBAでの一例です。 画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j, k As Long For i = Cells(Rows.Count, 1).End(xlUp).Row To 4 Step -1 k = i Do Until Cells(i, 2) <> "" i = i - 1 Loop j = i Cells(i, 3) = WorksheetFunction.Sum(Range(Cells(j, 1), Cells(k, 1))) Next i End Sub 'この行まで 尚、一旦マクロを実行すると元に戻せませんので別Sheetにコピー&ペーストしてマクロを試してみてください。 m(__)m
お礼
回答ありがとうございます。関数式ではありませんが、VBAの勉強用として参考にさせていただきたいと思います。
- KURUMITO
- ベストアンサー率42% (1835/4283)
回答No2です。 作業列を使わないでとのことですので次の式をC2セルに入力してからCtr+Shit+Enterで式を確定してから下方にオートフィルドラッグします。 =IF(B2="","",SUM(A2:INDIRECT("A"&IF(COUNT(B$2:B2)=COUNT(B:B),MATCH(10^10,A:A),SMALL(IF(SUBTOTAL(103,INDIRECT("B"&ROW(B$1:B$1000))),ROW(B$1:B$1000)),COUNT(B$1:B1)+2)-1))))
お礼
補足回答ありがとうございます。こちらの入力間違いか、エラーが出てしまいました。参考にさせていただきたいと思います。
- popuplt
- ベストアンサー率38% (31/81)
作業列なしの一例です。 [C4]=IF(B4="","",SUM(A4:INDEX(A4:A12,MATCH(,INDEX(0/(B5:B13<>""),),)))) 配列数式なので[CTRL]+[SHIFT]+[ENTER] 下へドラッグ。 B列に数値があれば、その前を合計するという考え方ですので、B列の最後に数値が無ければその前の合計はエラーになります。
お礼
回答ありがとうございます。うまくできました。大変助かりました。ありがとうございます。
- imogasi
- ベストアンサー率27% (4737/17070)
関数でやるのは難しい課題だ。出来ても相当長い難しい式になると予想される(初心者には意味がわからない式だろう。) 位置が不定であることが問題を複雑にする。 ーー 其れで、作業列を使い、やや?やさしくしてみる(imogasi方式) 例データ A列からD列、D列は作業列 赤 青 黄 作業列 1 1 14 1 9 1 1 4 1 1 -1 4 2 3 2 2 1 3 3 6 3 D4セルに =IF(B4="",D3,MAX($D$3:D3)+1) といれて下方向に式複写 結果上記D列。 意味は、B列で、データ出現までの行を、ひと塊として、上行から連番を振ったもの。 ーー D4に =IF(D4<>D3,SUMIF(D4:D100,D4,A4:A100),"") 意味は、D列で前の行と数字が変わったときだけ、D列の数字でA列の数をSUMIFする。 下方向に式を複写 結果 赤 青 黄 作業列 合計 1 1 14 1 14 9 1 1 4 1 1 -1 4 2 4 3 2 2 1 3 3 8 6 3 ーーーーーーー 質問の文章表現がわかりにくい 「B列で(次に)数字が現れる手前行までについて、A列の数字を足して、先頭行(B列に数字のある行)のC列に出したい」などどうかな。
お礼
回答ありがとうございます。当方生粋の日本人ですが、いまだに母国語の日本語を上手に使いこなせていないようです。日本語は難しい言語ですね。回答は参考にさせていただきたいと思います。
- KURUMITO
- ベストアンサー率42% (1835/4283)
2行目から下方にデータが入力されるとして、作業列を作って対応するのがよいでしょう。E2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(B2="","",MAX(D$1:D1)+1) C列にはお求めのデータを表示させるとしてC2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(B2="","",SUM(A2:INDIRECT("A"&IF(COUNTIF(D:D,D2+1)=0,MATCH(10^10,A:A),MATCH(D2+1,D:D,0)-1)))) ここでMATCH(10^10,A:A)はA列で数値のデータが入力されている最終の行番号を求めるものです。
お礼
回答ありがとうございます。うまく導き出せましたが、できれば作業列を作らないやり方を考えております。参考にさせて頂きたいと思います。
お礼
回答ありがとうございます。数式を見て、なるほどこういう導き方が確かに有るなと目から鱗。大変助かりました、ありがとうございます。