- ベストアンサー
excel2003空白セルを抜かした任意数のセルを合計したい。
excel2003で、ある列のデータ値に対し、空白セルを抜かしたA個分のセルの合計値を隣の列に「A回前までの合計値」として作成したいのですが、VBAを使わずに、計算式だけでできないでしょうか。 簡単な様で、よく分かりません。 この質問文も伝わるか自身がありませんが、よろしくお願いいたします。 空白セルは、0も入力されていないセルで、データの性質上ランダムに出来ます、さらに連続する場合もあります。 データはさかのぼるので合計の列は、A個下から始まります。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
A B C 1 データ 直近3個合計 作業列 2 1 2 3 0 3 4 5 9 10 5 6 10 7 10 8 9 18 8 9 0 18 9 10 1 10 10 11 10 12 8 9 12 13 6 15 13 14 15 15 9 23 15 16 6 21 16 1.セル B1 を次の“ユーザー定義”で書式設定して、数値 3 を入力 "直近"G/標準"個合計" 2.セル B2、C2 に次式をそれぞれ入力して、範囲 B2:C2 をズズーッ と下方にドラッグ&ペースト B2: =IF(ISERROR(LARGE(C$2:C2,B$1)),"",SUMIF(C$2:C2,">="&LARGE(C$2:C2,B$1),A$2:A2)) C2: =IF(A2="","",ROW()) セル B1 に他の数値(4 とか 5 とか)を入力して変化を確認してみてください。
その他の回答 (4)
- MackyNo1
- ベストアンサー率53% (1521/2850)
私には質問内容がよくわからないのですが、皆さんの回答の中にご自分の希望の処理(A列のデータと集計方法)の例が提示されているのでしょうか? このようなご質問では、言葉で説明するより表のレイアウトと集計結果をそのまま貼り付ける、あるいは図で例示したほうが的確な回答が得られると思います。
補足
ご指摘の通りです。 次回から図を添付するようにいたします。
- ka_na_de
- ベストアンサー率56% (162/286)
VBAを使わずとの条件でしたが、 サンプルコードを作ってみました。 不要なら無視してください。 '===========標準モジュールに記述================================ Function mySum(argRng As Range) On Error GoTo Err Dim argRngRowsCnt As Long, myRngRowsCnt As Long Dim myRng As Range Application.Volatile argRngRowsCnt = argRng.Rows.Count Set myRng = argRng Do Until WorksheetFunction.Count(myRng) = argRngRowsCnt If myRng.Row = 1 Then GoTo Err Set myRng = myRng.Resize(myRng.Rows.Count + 1).Offset(-1) Loop mySum = WorksheetFunction.Sum(myRng) Set myRng = Nothing Exit Function Err: mySum = "データ不足です" Set myRng = Nothing End Function '===========使い方============================================= '例えば A列がデータ列で '5個前までのデータの和を求める時 ' B5セルに =mySum(A1:A5) 'B5以下はコピペしてください。 '合計範囲内に空白があれば上方向にデータを探して合計します。
補足
ご回答ありがとうございました。 実はVBAがよく判らないので、計算式だけで模索していたのですが、やはり複雑な事はVBAの方が簡単なのでしょうか、今後の勉強とさせて頂きます。
- mt2008
- ベストアンサー率52% (885/1701)
誤記訂正 誤:データ頭から3個分の合計は次の様な式になります 正:データ頭から4個分の合計は次の様な式になります
- mt2008
- ベストアンサー率52% (885/1701)
お礼
ありがとうございました。
補足
ご回答ありがとうございました。 まさにこの通りです。 はじめの3個は表示が出ないようになっているのですね。 理解するのに30分位かかりました(^^;) ありがとうございました。