- ベストアンサー
エクセルマクロで合計を計算したい
いつもお世話になっています 可変な範囲を変数で取得して、合計を計算できるでしょうか 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行番号)" なんてのを実行したのですが、当然のことながらダメでした。
- JOX
- お礼率83% (141/169)
- オフィス系ソフト
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんな感じでどうでしょうか。B列の例です。 Sub SumSet() Dim strRetu As String '列名 Dim endRow As Long '最終行 strRetu = "B" '最終行を求める endRow = Range(strRetu & "65536").End(xlUp).Row '算式をセットする Range(strRetu & (endRow + 1)).Formula = _ "=SUM(" & strRetu & "1:" & strRetu & endRow & ")" End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17068)
B2より計数が入るとして Sub test01() dim y as Long y = Worksheets("Sheet1").Range("b2").CurrentRegion.Rows.Count Cells(2 + y, 2) = Application.WorksheetFunction.Sum(Range(Cells(2, 2), Cells(y + 1, 2))) End Sub 強制改行されるかも知れないが、dimとY=とcells(..)= の3行です。
お礼
御礼が遅れて申し訳ありません :nishi6 様 と違って当該セルにSUM()関数式が入らないんですね すごい!! こんなマクロもあるんなんて、本当にこのサイトの皆様には感心させられっぱなし です。 このマクロを分解して勉強してみます ありがとうございました。
- taka2456
- ベストアンサー率29% (36/122)
どこからどこまでの範囲の合計をどこに表示するか 指定しないとだめですが その指定をするならSUM関数でやったほうが早いと思いますけど だめなのでしょうか? 答えを表示したいセルをクリックして「オートサム」をクリックして 合計を求めたい範囲をドラッグしてエンター押せば簡単に出ると 思うのですが もしもこれでだめなら補足をください C列もB列と同じ行番号間の合計を出したいとか もう少し具体例お願いします そしたら、また回答しますので
補足
説明不足で申し訳ありません >答えを表示したいセルをクリックして「オートサム」をクリックして >合計を求めたい範囲をドラッグして はいその通りなんですけど・・・ 表作成が下手なんでしょうか 合計を求めたいセル位置が項目ごとに数十もあるので、手作業だと大変で 列位置は同じなのですが 合計を求める行位置が下に延々と続いているものですから それらを一気にマクロで処理できないものかと考えています。 範囲取得は、以前教えて頂いた Set 範囲 = ActiveCell.CurrentRegion この構文等を利用して何とか出来るのですが 可変範囲の合計を求める処でツマズイテしまいました
関連するQ&A
- Excelマクロ 計算式を足していく
Excel2003を使用しています。 マクロで、伝票を追加して行き、追加する度に合計のセルにある計算式を 前の伝票の計算式と合算させたいのですが、うまく行きません。 1枚目の合計 =Sum(A4:A17) 2枚目の合計 =Sum(A22:A35)+1枚目の合計 3枚目の合計 =Sum(A40:A53)+1枚目の合計+2枚目の合計 ※合計の計算式は18行毎に入ります。 伝票の枚数は決まっていませんので、何枚追加しても合算出来る様にと考えています。 Formulaを使ってセルの計算式を取得し、2枚目の計算式と合算は出来るのですが、 3枚目4枚目となっていく時の記述がイマイチうまく出来ません。 sikiA = Range("A18").Formula ←1枚目の合計 siki1 = sikiA & "+" & Cells(18 * cnt, 1) ←2枚目の合計と1枚目の合算 ※「cnt」は伝票の枚数です。 sumの部分は、伝票の追加の時点で計算式が入ります。 なので、伝票をコピー&貼り付けした時点で、合算している計算式を入れてしまった方が 良いのかなとは思いましたが、思うように行っていません。 よろしくご教授下さい。
- ベストアンサー
- オフィス系ソフト
- EXCELマクロで数行おきに繰り返す場合
初歩的な質問なんでしょうが宜しく尾お願いします。 SHEET1上で、他のシートを参照して数式を入力するマクロですが 数行おきに入力していき、かつ参照するシートも数行おきとなる 場合の記述がよく分かりません。 Range("A2").Formula ="=IF($K$1>=3,SHEET2!H7,""-"")" Range("B2").Formula ="=IF($K$1>=6,SHEET2!IF7,""-"")" Range("A4").Formula ="=IF($K$1>=3,SHEET2!H12,""-"")" Range("B4").Formula ="=IF($K$1>=6,SHEET2!I12,""-"")" ・ ・ という感じで、2行おきのセルにシート「SHEET2」のセルを5行おきに 参照していきます。50回くらい(100行目迄繰り返すので簡単に記述で きないかと前半のRange("Ax").はForToで指定すればいいのかなと なんとなく想像はできるのですが、さらに入力する数式の行も 異なる間隔で可変させるという場合の記述が分かり分かりません。 素人で恐縮ですが教えて頂けませんか?
- 締切済み
- その他MS Office製品
- エクセル マクロ
はじめまして。 エクセルでマクロを使って研究を進めているものです。 最近マクロを使い始めたのですが、ワークシート関数のスクリプトについてご質問があります。 具体的な記述を書いたほうが説明しやすいので、下に記述します。 Sub Macro1() Windows("a.xls").Activate ActiveCell.FormulaR1C1 = "=SUM(RC[-8]:RC[-1])"・・・(1) Range("J3").Select End Sub このような命令があるときに、sum関数の中に変数を入れることを考えます。そのときに、R1C1表示では選択したセルを基準にして変数を考えなくてはいけないので考えにくいです。そこで、イメージとしてですがこのような書き方はできないのでしょうか。 (1)の部分 ActiveCell.Formula = "=SUM(Range(Cells(2, 2), Cells(2, 変数)))" つまり、rangeやcellsを使って書きたいということです。 また、実際のエクセルのセルに入力されている関数をそのままコピーして、それに変数を自分で手直しして加えるような方法がありましたら教えてください。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- マクロで計算式に入力
マクロで計算式を入力するのに 例えばセルA1に『=SUM(B1:C1)』という式を入れる時に Range("A1").Formula = "=SUM(B1:C1)" というコードを書いて処理しています。 しかし『=IF(B1=1,"一です","")』というように文中に『"』があるような式を入力しようとするとエラーが出でしまいます。 &でくくったり色々してみたのですがうまくいきません。 何か方法があるのでしょうか。
- ベストアンサー
- オフィス系ソフト
- 最終行に合計(最終行が列によって異なる場合)
エクセルVBAに於いて質問させて頂きます。 タイトルにも書かせていただきましたが、 A列に行数可変のデータ(文字列)があり、 B列に行数可変のデータ(数字)があり、 A列の行数>=B列の行数の条件とき、 A列の最終行+2の位置のA列に文字で合計 A列の最終行+2の位置のB列にsumを表示する場合、 どのようにすれば出来ますでしょうか。 A列の最終行+2の位置のA列に文字で合計は With Range("A3") .End(xlDown).Offset(2, 0).Formula = "合計" End With でいけると思うのですが、 A列の最終行+2の位置のB列にsumを表示する場合どのようにすればいいのかわかりません。 ご教授のほどお願い致します。
- ベストアンサー
- オフィス系ソフト
- エクセル マクロ 足し算
いつもお世話になります。マクロ勉強中の初心者です。 マクロの足し算を教えてください。 A列 B列 C列 ・・・・ 1 2 3 4 5 6 7 8 9 という数字のデータがあります。 これらのA列の合計、B列の合計・・・など列の合計を出すマクロはわかるのですが、 作成したVBA Range("a4") = Application.WorksheetFunction.Sum(Range("a1:a3")) A列の合計(A1~A3)とB列の合計(B1~B3)とC列(C1~C3)の合計を、D4に合計させる方法を 教えてください。 どうぞよろしくお願いします。
- ベストアンサー
- その他MS Office製品
- マクロで合計値を求める
関数でいうSUM(A1:Z1)をマクロでやりたいのですが、やり方が良く分かりません。 range("A1").value+range("B1").value+… とやるのも面倒なので。 別な方法あったら教えてください。
- ベストアンサー
- オフィス系ソフト
- マクロで合計値を求める
関数でいうSUM(A1:Z1)をマクロでやりたいのですが、やり方が良く分かりません。 range(\"A1\").value+range(\"B1\").value+… とやるのも面倒なので。 別な方法あったら教えてください。
- 締切済み
- オフィス系ソフト
- エクセルマクロの作り方(初歩)で教えてください。
エクセルマクロについての初心者です。小学校で使うテスト結果の分析表(○、×の一覧表)作成の支援ソフトを作ろうとしていますが途中でわからなくなったので教えてください。 マクロにについては、配列変数、For Next,Do Loopのことが少し理解できる程度で、それらを組み合わせて作ろうとしましたが、使い方がよく分かりません。説明を簡単にするため、次の例で教えてください。児童数は40で、2行目から41行目までに児童の名前やデータが入ります。A列は出席番号、B列は名前、CからG列は正解した番号を記入するセル(問題は5問)、HからL列は問題1~5の○×を1と0で表示させます。そして出席番号1番の児童が3番と5番だけ正解なら、C2に3、D2に5を入れるだけで、H2~L2に0,0,1,0,1と自動的に表示されるようにしたいのです。実際には、児童数は200、問題数を50ぐらい考えています。C2~G2までのデータを配列変数に入れて、H2のセルにはIF文を組みわせて0か1を表示させて、それをL2まで繰り返し、それ全体を41行目まで繰り返して…とやろうとしたのですが、繰り返し方でうまくいきません。このような方法でなくてもかまいません。もっと簡単な方法があればそれも教えてください。よろしくお願いします。
- ベストアンサー
- その他MS Office製品
お礼
ありがとうございます >Range(strRetu & (endRow + 1)).Formula = _ > "=SUM(" & strRetu & "1:" & strRetu & endRow & ")" なるほど、「" "」の使い方が不適切だったみたいですね なんとか出来そうです。 感謝します。