• ベストアンサー

引数が決まらない合計を出す

sha-girlの回答

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

VBAを使って空白が来るまでの合計という感じではどうでしょうか? こんな感じで Private Sub CommandButton1_Click() Dim total As Double '//合計値 Dim a As Variant '//途中の値 Dim x As Integer, y As Integer '//セルの位置 x = 8 '//セルHの y = 5 '//5行目から Do a = Sheet1.Cells(y, x).Value total = total + a If a <> "" Then y = y + 1 '//空白でなければ次の行へ移動 Loop While a <> "" '//空白なら抜ける Sheet1.Cells(y, x).Value = total '//空白がみつかったらそこに合計値を書く End Sub

kkazumi
質問者

補足

データーの入ったシートにマクロを入力し実行すると実行時エラー'1004'アプリケーション定義または、オブジェクト定義エラーですと出ます。しかし、何も書いていないシートにマクロを入力しH5から適当に数字を入力して実行するとOKです。データーの入ったシートではなぜ、だめなんですか。どうすればいいのですか?よろしくお願いします。

関連するQ&A

  • 範囲内に合計を出す

    毎日SUM関数で合計を出していますが、もっと簡単に出せないかと思い質問しました。H7からデーター(数字)が下に入っていきます。(H7.H8.H9.・・・・・)日によ って最後の行が違います。(シートは毎日違いますが最初に入る場所はH7からと決まっています。)昨日はH7~H20でした。今日はH7~H27ですと日によってばらばら です。計算のしかたですが、H20で終わった時は、合計ボタンを押したらH7~H20までをH1に合計を表示してH列の最終行の次も合計を表示する所まではなんとか 出来ましたが、L列から以降のセルにデーターがあっても最終行と判断しない様にするにはどうすればいいですか。(A列~K列で最終行がK25の時M列のM30にデーターがある時はH31が最終行の次と表示しますが本当はH26と表示してほしいです)アプリケーションはExcel2000です。よろしくお願いします。 Private Sub CommandButton1_Click() Dim maxRow As Long maxRow = Application.Max(Range("H65536").End(xlUp).Row, 5) Range("H1") = Application.Sum(Range("H7:H" & maxRow)) Range("A1:K2").Copy With ActiveSheet.UsedRange .Cells(.Count + 1).Select End With ActiveSheet.Paste Application.CutCopyMode = False With ActiveSheet.UsedRange .Cells(.Count + 1).Select End With End Sub

  • 行を追加した時の、値の合計範囲

    行を追加するマクロがあり、実行すると「合計」行の1行上に行が追加されます。 行が追加された分「合計」のある行が下がっていくんですが、その関数が変動してくれなくて困っています。    A   B   C   D   E   F   G   H   I 1    商品の基本データ ・    ・ ・    ・ 14   商品の基本データ 15 16     日付  入庫  出庫               本日在庫  17 2012/04/01  100                     100 18 2012/04/05  50                      150 19 2012/05/03      100                 50 20 2012/05/04  300                     350 21    ・         150                 200 22    ・          50                 150 23    ・      200                     350 24    ・          10                  340 (ここに行が挿入されていく) 25 合計       (1)   (2)                340(=(1)-(2)) (1)=IF(COUNT($C$17:$C24)=0,"",SUM($C$17:$C24)) (2)=IF(COUNT($D$17:$D24)=0,"",SUM($D$17:$D24)) 現在こんな感じで式を入れています。$C24と$D24が$C25...、$D25...等動いていってくれるといいんですが・・。 他にもSUMPRODUCTやOFFSETなど色々試しましたが、上手くいきません。 行が増えていく(セル参照範囲が変わってくれない)、C:CやD:Dとして設定できない、データが連続していない、などが原因だと思っています。 A列には何もありません。 E~H列は他にもデータが入っています。 マクロで、B17からHの合計の1行上までを日付でソートすることがあります。 合計行の上に空白行C25を入れ、合計行C26にSUM(C17:C25)とし、 挿入する位置を空白行C25の上とすれば、SUMは挿入行を抱えていってくれるんですが、 この場合空白の行25を高さ0の不可視にさせなければならず、利用する側としては21・22・23・24・26と、25が飛んでいるのが気になるものと思います。 できればそういう疑問を持たせることなく可動させたいです。 因みにVBAでWorksheet_ChangeやWorksheet_Selectionhangeなどは既に使用しているので、 マクロで自動で合計値を入力することはできないと思います。 ボタンで動かすマクロでなら出来そうですが、合計を逐一表示するのにマクロボタンを設置するのもどうかと思うので・・。 いくらネットで探しても方法が見つからなかったので、何方かご教授宜しくお願い致します。

  • Excel2003での合計計算

    連続した列または行の数字を合計するときExcel2000やそれ以前のバージョンでは合計したい列または行を反転ドラッグし、数字列あるいは行の下あるいは右のセルをクリックすると自動的に合計が出てきたと思いますが、2003バージョンでは違うのですか。ヘルプの 「数値の列の下、または数値の行の右にあるセルをクリックします。 [標準] ツールバー (ツールバー : コマンドを実行するのに使用するボタンやオプションを含むバー。ツールバーを表示するには、[ユーザー設定] ダイアログ ボックス ([ツール] メニューの [ユーザー設定] をクリックして、[ツールバー] タブをクリックします) を使用します。)の (オート SUM) をクリックして、Enter キーを押します。」 の通りにしてもSUM()だけしか出てこず、合計が出ません。なぜでしょうか

  • 1行ごとに合計する

    エクセルの表内で1行ごとに合計を出したいです。 行内に空白(VLOOK入り関数)と#N/Aと表示されている行があるためか =SUM(IF(MOD(ROW(A1:A20),2)=1,A1:A20,0)) といった関数を使っても上手く合計ができません。 何かよい方法(関数)はないでしょうか?

  • 串刺し合計値と単純合計値の違いについて

    Excel2007で異なるブック(ファイル)の串刺し合計を行っています。 その基となるブックのシート(表)では合計値を足し算やSum関数を用いて求めています。 その基となる表の合計値を串刺しした値と串刺しした表で足し算やSum関数で求めた数値が一致しないのです。何故か解らずにおります。 一致させるにはどうした良いか?または一致しない理由を突きとめるにはどうしたら良いか?ご教授いただけないでしょうか? 基となるブック(ファイル)の計算式や串刺し合計の計算式は何度も確認しました。

  • 偶数セルの合計・・・ってできますか?

    こんばんは。 EXCEL(2003,OS WindowsXP)で教えていただきたいことがあります。 例えば A列に1から順番に 日付,数字,日付,数字・・・ と何行も入力したとします。 A1 が1月1日 A2 が2,000 A3 が2月3日 A4 が1,000 こんな感じです。 このときに,A5にA2とA4の合計をあらわすには A5のセルに「=A2+A4」と打てば良いのですが, そのほかのやり方がありませんでしょうか。 =sum(A1:A4) とすると,日付の部分の数字も合計されてしまいます。 =sum(A2,A4) とする方法は分かります。 (しかし大量になるとエラー表示されるのですがなぜでしょう?個数制限?) たくさんの量になってくると,1つ1つ選択していくことが非常に面倒です。 何か良い計算式,関数などありませんでしょうか。 どうぞよろしくお願いいたします。

  • エクセル関数:隣の列の数字の合計

    Excel2010です。 関数初心者なのでどうぞよろしくお願いします。     A  B       10 ◆     30     50 ◆     40      20     ・     ・ 合計 60 のように、A列に数字、B列に◆があり、 B列に◆のある行の数字のみを合計し、 A列の一番下の行に表示させたいです。 IF関数や条件書式を見てみましたが、 よく理解できませんでした。 ご回答をお願い致します。

  • 時間を合計すると『0:00』となります

    Excelで勤務時間の計算をしたいのです。1日の勤務時間から、1ヶ月間の勤務時間を計算しようとしています。0:30,1:00,1:30を合計して3:00と表示したいと考えます。今までエクセルで作成したものはきちんと作動していましたが、今回は上手くいきません。セルの書式で[h]:mmとしSUM(範囲)を使用しましたが0:00と表示されます。上記の0:30の時間は別のアクセスソフトから貼り付けています。一応解決方法が2種類見つかりました。その0:30などの数字を打ち直したらキチンと動きます。しかし全部の数字を打ち直すのはかなりの手間です。もちろん半角数字を使用しています。また関数がSUM(A1:A3)だと0:00ですが、SUM(A1+A2+A3)だと3:00と表示されます。しかしこれも+を打ち込むのがかなり手間です。これらの状況をふまえた上でどなたか簡単な解決方法を教えてください。本当に困っています。

  • エクセルマクロで合計を計算したい

    いつもお世話になっています 可変な範囲を変数で取得して、合計を計算できるでしょうか   A  B C D  1   5  2   8  3   3  4   7  5    <-----ここ 「B5」に合計値を出したい 但し、データが可変するので常に「B5」とは限らず「B7」等の時もある これをマクロで自動取得してそのデータの下に合計を出したいのですが お願いいたします。 (”合計”・"H行番号" ・"L行番号")を変数として取得。。。。。 Range("合計").Formula = "=sum(B & H行番号 : B & L行番号)" なんてのを実行したのですが、当然のことながらダメでした。

  • 小計のみ足したい場合

    教えてください。 エクセルの表で500行ぐらいに数字が入っています。 その中に小計値が100ぐらいあります。 一番最後の行に小計値のみの合計を出すにはどうすればいいのでしょうか? SUM関数だと引数が30しか指定できないので数字が出ません。 やはりSUM()+SUM()しかないのでしょうか?