エクセルVBAでA列とB列の条件に基づいて合計を表示する方法
- エクセルVBAを使用して、A列の行数がB列の行数以上の場合に、A列の最終行+2の位置に「合計」という文字を表示する方法を教えてください。
- また、A列の最終行+2の位置のB列にSUM関数を使用して合計を表示する方法も教えてください。
- お手数ですが、どちらの方法を使えば良いか教えていただけると助かります。
- ベストアンサー
最終行に合計(最終行が列によって異なる場合)
エクセル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を表示する場合どのようにすればいいのかわかりません。 ご教授のほどお願い致します。
- quindecillion
- お礼率100% (104/104)
- オフィス系ソフト
- 回答数4
- ありがとう数4
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
一番シンプルには with range("A65536").end(xlup) .offset(2).value = "合計" .offset(2, 1).formular1c1 = "=SUM(R3C:R[-2]C)" end with などのようにします。 #注意 end(xldown)で下に下ろすと,データがまだ記入されていないなどの場合によく失敗します。 #参考 一回「最終行」を変数で受けてから dim r as long r = range("A65536").end(xlup).row + 2 cells(r, "A") = "合計" cells(r, "B").formular1c1 = "=SUM(R3C:R[-2]C)" などのように利用した方が,何かと便利な場合も多いので練習してみてください。
その他の回答 (3)
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 With Range("A3").End(xlDown) .Offset(2, 0).Value = "合計" .Offset(2, 1).Formula = "=sum(B3:B" & .Row & ")" End With
お礼
ご回答頂きましてありがとうございます。 思惑通りの事ができました。
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 色々やり方はあると思いますが・・・ 一例です。 Sub test() Dim i As Long i = Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 1) = "合計" Then Range(Cells(i, 1), Cells(i, 2)).ClearContents End If With Cells(Rows.Count, 1).End(xlUp).Offset(2) .Value = "合計" .Offset(, 1) = WorksheetFunction.Sum(Columns("B")) End With End Sub ※ データが変更された場合も対応できるようにしてみました。 参考になりますかね?m(_ _)m
お礼
ご回答頂きましてありがとうございます。 思惑通りの事ができました。 確かに、色々な方法が有ることに気づかされました。 勉強になります。
- kybo
- ベストアンサー率53% (349/647)
B3からA列の最終行までの合計だとすると With Range("A3").End(xlDown).Offset(2, 0) .Formula = "合計" .Offset(, 1).Value = "=SUM(B3:B" & .Row - 2 & ")" End With
お礼
ご回答頂きましてありがとうございます。 思惑通りの事ができました。
関連するQ&A
- 最終行を取得して別列にコピー
最終行を取得して、別の列にコピーするVBAを教えてください。 具体的には、次の通りです。 (1)A2から下方に項目NOが入っています。可変です。 A2から項目NOの最終行までの行数をカウントします。 (2)B3:D3には数式が入っています。 B4:D4以下に数式を(1)で取得した行数分だけコピーします。 かなり緊急で困っています。 教えていただけると助かります。
- ベストアンサー
- 財務・会計・経理
- 最終行を探してSUMするには?
またまたお願いします。 シートT_日計作業にその日の注文データがあります。 金額はC列です。セルC2から始まっていきます。 金額の合計を求めるマクロを書いてますがうまくいきません。 (1) 最終行を求められたのですが、C2から最終行までの 普通、範囲設定でRange("C2:C20").select と書きますよね。 最終行は z = Range("c1").End(xlDown).Rowで求めてあります。 今回の最終行がC20の場合、Z=20 となり 範囲指定は Range("C2:C&Z").Select ???? これがうまくいきません。何か 勘違いしているのでしょか? (2) ActiveCell.FormulaR1C1 = "=SUM(わかりません)" (1)がクリアーしたとして どう書けばよいのでしょうか? 宜しくお願いします。 Sub 日計注文編() Dim z As Long Sheets("T_日計作業").Select '最終行番号を調べる If Range("c2").Value = "" Then z = 1 Else z = Range("c1").End(xlDown).Row End If 'C2から最終行番号までの合計を求める Range("C2:C&Z").Select ActiveCell.FormulaR1C1 = "=SUM(わかりません)" ・・・・
- ベストアンサー
- オフィス系ソフト
- アクティブセルから、A列最終行までフィルダウン
今いるセルの位置から、A列のデータのある最終行までフィルダウンするコードを教えていただけないでしょうか。 下記のようにF列ときまっていればいいのですが、毎回ちがうので、できれば ActiveCellをつかってつくることが できないでしょうか。 Range("F3:F3").AutoFill Destination:=Range("F3:F" & Range("A3").End(xlDown).Row()) ExcelのVBAでわかる方おしえてください。
- ベストアンサー
- Excel(エクセル)
- 最終行を取得して、別の列にコピーするマクロ
最終行を取得して、別の列にコピーするVBAマクロを教えてください。 (Excel2003です) 具体的には、次の通りです。 (1)A2から下方に項目NOが入っています。可変です。 A2から項目NOの最終行までの行数をカウントします。 (2)B3:D3には数式が入っています。 B4:D4以下に数式を(1)で取得した行数分だけコピーします。 かなり緊急で困っています。 教えていただけると助かります。
- ベストアンサー
- その他MS Office製品
- VBAでの行集計
VBAでの行集計 いつもお世話になっております 今 マクロでの行集計で困っております。 お力をお貸し下さい m(__)m したいことは B列最終セルを見つけ出し 列の合計を出す 合計を右横最終セルまでコピーする 最終はR列までです そこで下記のマクロで合計は出しました Dim BeforePos As Long BeforePos = Range("B4").End(xlDown).Row Cells(BeforePos + 1, 2).Formula = "=SUM(B4:B" & BeforePos & ")" このセルの数式を右最終列までコピーをしたい それだけのことですがうまくいきません どうかよろしくお願いします
- ベストアンサー
- オフィス系ソフト
- 選択範囲に関する質問
いつもお世話になっております。 初歩的な質問だと思いますが宜しくお願い致します。 リストでA列にデータが並んでいます。BとC列に数字があり、 B列に新しい列を入れて Range("B2").Select ActiveCell.FormulaR1C1 = "=SUM(RC[1]:RC[2])" こちらをAのデータが入ってる行数までペーストさせたいのですが、 どうしたらデータが入ってる行数までペーストさせるマクロを組み込めるでしょうか? Range("A2").End(xlDown).Rowなどで最終行まで調べることは出来るのですが、 Select、Copyの場合はどのように入れたら宜しいでしょうか? 自分で調べてみていろいろやってみましたのですが上手く行きませんでした…
- ベストアンサー
- Visual Basic
- 最終行に行くマクロを教えてください。
よろしくお願いします。 ------------------------------------- A列--B列--C列--D列 123--123--512--535 264--533--111 -----222 -----○--------○-- ----------------------------------------- 上記のような表があるとして、B列とD列の○の箇所に合計を出したいと思います。 合計を出す行は、固定されているのではなく、B列とD列のデータの多いほうの下の合計を出したのですが、 D列のほうが長いときには、END+方向キーとOffsetで何とか、合計を出したい行までセルを持っていくことはできるのですが、B列のほうがデータが多い場合は、一番下の行までセルを持っていくことができません。 と、オートSUMの操作をマクロに記憶をすると、合計範囲が絶対参照になってしまい、合計する範囲がそのつど変わってしまう場合の処理の仕方がわかりません。 上記のような表を、抽出機能で作成しており、たくさんの抽出結果の合計を出さなければならなく、現状は、一つずつ、合計を出しているしだいです。 使用ソフト EXCEL2000 Win2000
- ベストアンサー
- オフィス系ソフト
- 最終行の取得について
今回、最終行を習得するにあたって壁にぶちあたってしまいました。。 まず、元dataがありましてそれを B1セル=IF($A1=0,"",A1)’下方向にペースト といったように数式を用いて空白にしたところ、 それを空白としてひらい出すことができず、別のシートに値のみ貼り付けを行っても、うまくいきません。現状このようなコードで最終行をとらえれません、何かいい方法がありますでしょうか? Range("B1").End(xlDown).Row
- 締切済み
- オフィス系ソフト
- 範囲内に合計を出す
毎日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
- ベストアンサー
- Visual Basic
- 「自分のセルより1行上の行番号」を求める方法
初歩的な質問で申し訳ありません。 あるプログラムからデータをExcelに吐き出しています。 SUM関数を使って値の合計を表示したいのですが、 行数が不明なため、SUM関数をうまく作れません。 A列|B列 ────── No1| 13 No2| 21 No3| 8 No4| 40 ~ ~ ────── 計 |SUM(B2 : B?) ← ★ この★の部分の、「自分のセルより1行上の行番号」を求める方法を教えてください。
- ベストアンサー
- オフィス系ソフト
お礼
ご回答頂きましてありがとうございます。 思惑通りの事ができました。 >end(xldown)で下に下ろすと,データがまだ記入されていない >などの場合によく失敗します upとdownの注意を見ていたのにすっかり忘れていました。 確かに、参考のコードの方が今後何かと便利に使えそうな気がしますので、こちらを使用させて頂きたいと思います。