アプリ版:「スタンプのみでお礼する」機能のリリースについて

 始めまして、よろしくお願いします。
このようなシートがあります。


     A  B  C  
1    赤  青  黄  
2 
3   
4    1  1   14 
5    9        
6          
7    4      
8    1  -1   4
9    3     
10   2  1   ・
11   ・  ・    ・
12   ・  ・    ・

 4行に(A4に1入力)データーが入力され、データーは下へスライドコピーされていきます。B列に数字が入る場合(ここでは4行、8行、10行になります)に、B列の無記入行のA列の計(B5,B6,B7,が無記入なので合計されるA列の値はデーター入力されるA4とB列無記入にあたるA5,A6,A7の計です)をC列に表示されるようなC4に入る関数式を教えていただきたく、よろしくお願いします。

A 回答 (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))
上へオートフィル
    • good
    • 0
この回答へのお礼

 回答ありがとうございます。数式を見て、なるほどこういう導き方が確かに有るなと目から鱗。大変助かりました、ありがとうございます。

お礼日時:2011/05/04 09:38

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列で数値のデータが入力されている最終の行番号を求めるものです。
    • good
    • 0
この回答へのお礼

 回答ありがとうございます。うまく導き出せましたが、できれば作業列を作らないやり方を考えております。参考にさせて頂きたいと思います。

お礼日時:2011/05/04 09:42

関数でやるのは難しい課題だ。

出来ても相当長い難しい式になると予想される(初心者には意味がわからない式だろう。)
位置が不定であることが問題を複雑にする。
ーー
其れで、作業列を使い、やや?やさしくしてみる(imogasi方式)
例データ
A列からD列、D列は作業列
赤青黄作業列


11141
91
1
41
1-142
32
2133
63
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する。
下方向に式を複写
結果
赤青黄作業列合計


1114114
91
1
41
1-1424
32
21338
63
ーーーーーーー
質問の文章表現がわかりにくい
「B列で(次に)数字が現れる手前行までについて、A列の数字を足して、先頭行(B列に数字のある行)のC列に出したい」などどうかな。
    • good
    • 0
この回答へのお礼

 回答ありがとうございます。当方生粋の日本人ですが、いまだに母国語の日本語を上手に使いこなせていないようです。日本語は難しい言語ですね。回答は参考にさせていただきたいと思います。

お礼日時:2011/05/04 12:20

作業列なしの一例です。



[C4]=IF(B4="","",SUM(A4:INDEX(A4:A12,MATCH(,INDEX(0/(B5:B13<>""),),))))

配列数式なので[CTRL]+[SHIFT]+[ENTER]
下へドラッグ。

B列に数値があれば、その前を合計するという考え方ですので、B列の最後に数値が無ければその前の合計はエラーになります。
    • good
    • 0
この回答へのお礼

 回答ありがとうございます。うまくできました。大変助かりました。ありがとうございます。

お礼日時:2011/05/04 12:33

回答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))))
    • good
    • 0
この回答へのお礼

 補足回答ありがとうございます。こちらの入力間違いか、エラーが出てしまいました。参考にさせていただきたいと思います。

お礼日時:2011/05/04 12:30

こんにちは!


ご希望の関数でなく、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
    • good
    • 0
この回答へのお礼

 回答ありがとうございます。関数式ではありませんが、VBAの勉強用として参考にさせていただきたいと思います。

お礼日時:2011/05/04 12:26

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