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

1から90まで連続するシートがあり、合計シートを作成し集計をしたいです。
串刺し集計では1から90まで集計は出来ますが、合計シートのA1に30と入力すると1から30までのシートの合計、56と入力すると1から56までとA1に入力したシートまでの合計が出るようにしたいです。

どなたかご教示いただけますでしょうか。
どうぞよろしくお願いいたします。

A 回答 (2件)

こんにちは



串刺しのSUM()関数の引数部分をINDIRECT形式にすれば良いかのと思ったら、串刺しの場合のセル範囲はINDIRECT関数では解釈できないみたいですね。

>1から90まで連続するシートがあり~~
という固定条件なら、マクロあるいはユーザ関数などで対応可能と思います。

他にも方法があるかも知れませんが、以下はユーザ定義関数での一例です。
使い方として、串刺し結果を表示したいセルに
 = Kusizasi(「串刺し対象シート名の最大値」, 「串刺し対象のセル」)
のように入力して利用します。
 「串刺し対象シート名の最大値」は計算対象シートの範囲を示します。
     例えばシート1~56までを対象とするなら56となります。
     ご質問で例示のようにA1の値にしたければ、A1とすれば良いです。
 「串刺し対象のセル」は実際に合計計算をするセル位置をしめします(A20 とか)


事前準備として、Alt+F11キーで表示されるVBAのエディターで、標準モジュールに以下のコード(=ユーザ定義関数)をコピペしておきます。

Function Kusizasi(ByRef mx As Integer, ByRef addr As Range)
Dim a As String, s As Worksheet
Dim t, n
a = addr(1).Address
t = 0

For Each s In Worksheets
 n = s.Name
 If IsNumeric(n) Then
  If 1 <= n And n <= mx Then
   If IsNumeric(s.Range(a).Value) Then t = t + s.Range(a).Value
  End If
 End If
Next s
Kusizasi = t
End Function
    • good
    • 0
この回答へのお礼

助かりました

ありがとうございます!
出来ました!大変助かりました!

お礼日時:2019/09/06 21:26

No1です



仮定していた内容で書き忘れていたことがありました。

>1から90まで連続するシートがあり
No1の関数は、対象のシート名が「1」、「2」・・・「90」のように単純な数字のみと仮定しています。
シート名が「Sheet1」や「シート1」等のように上記以外の場合には、そのままでは動作しませんので悪しからず。

  ・・・ 念のためです。
    • good
    • 0
この回答へのお礼

ありがとう

補足までどうもありがとうございました。
VBA 勉強中なのでとても勉強になりました。

お礼日時:2019/09/06 21:27

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