- ベストアンサー
EXCEL VBA 行の値を累計したいのですが・・
VBA初心者です。 VBAでEXCELの行の値を累計したいのですが、プログラムの仕方がわかりません。 どなたかわかる方教えてください。 A B C D E ・・・・ 1 1000 3000 2000 4000 3000 2 2000 5000 1000 3000 2000 3 4000 2000 3000 1000 5000 : 実行結果 A B C D E ・・・・ 1 1000 4000 6000 10000 13000 2 2000 7000 8000 11000 13000 ←行の値の累計 3 4000 6000 9000 10000 15000 : 行と列はたくさんあって、最後のセルまで累計する方法を教えていただけるとありがたいです。 どうぞよろしくお願いします。m(_ _)m
- VBAbiginer
- お礼率100% (6/6)
- オフィス系ソフト
- 回答数2
- ありがとう数2
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
数式の方が簡単ですよね VBAの方も初歩的なことですが 一応提示しておきますが Sub test() Dim x, y For x = 1 To 3 '行数 For y = 1 To 5 '列数 If y = 1 Then Worksheets("sheet2").Cells(x, y).Value = Worksheets("sheet1").Cells(x, y).Value Else Worksheets("sheet2").Cells(x, y).Value = Worksheets("sheet1").Cells(x, y).Value + Worksheets("sheet1").Cells(x, y).Offset(, -1).Value End If Next y Next x End Sub 参考?まで
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 必ず、マトリックス(格子状)になっていることが条件です。 累計は上書きしてしまいます。マクロを行った直後だったら、元に戻すことも可能です。ただし、あまり大きな表ですと、どうなるか不明です。出来る限り、一旦保存してからのほうが安全です。 '------------------------------------------- Option Explicit Dim arBackUp As Variant 'バックアップ用 Sub CumilativePastePr() Dim rng As Range Dim r1 As Range Dim r2 As Range Dim i As Long Set rng = Range("A1").CurrentRegion arBackUp = rng.Value Application.ScreenUpdating = False With rng For i = 2 To .Columns.Count Set r1 = .Columns(i - 1) Set r2 = .Columns(i) r2Sum r1, r2 Next i End With Application.ScreenUpdating = True Set rng = Nothing Set r1 = Nothing : Set r2 = Nothing End Sub Private Sub r2Sum(r1 As Range, r2 As Range) Dim i As Variant Dim ar1 As Variant Dim ar2 As Variant ar1 = r1.Value ar2 = r2.Value For i = 1 To r1.Rows.Count r2.Cells(i, 1).Value = ar1(i, 1) + ar2(i, 1) Next i End Sub '------------------------------------------- 'おまけ Sub RetrivalOrg() '元に戻すマクロ Dim x As Long Dim y As Long On Error Resume Next x = UBound(arBackUp, 1) y = UBound(arBackUp, 2) If Err.Number > 0 Then MsgBox "元には戻りません。", 48: Exit Sub On Error GoTo 0 Range("A1").Resize(x, y).Value = arBackUp End Sub ----------------------------------------
お礼
Wendy02さん、ありがとうございます。 とても参考になりました!
関連するQ&A
- Excel VBAでの値の比較
お世話になります。 Excel VBAでの値の比較方法についてご教授頂きたく存じます。 下記のような値がセルに入っていると仮定しまして、 セルA1とセルG1を比較する セルA2とセルG2を比較する セルB1とセルH1を比較する セルB2とセルH2を比較する 値が違う場合のみ、A列、又は、B列のセルの色を変更したいのですが・・・。 下記例の場合であれば、B1とA2がセルの色が変われば良いです。 A列 B列 G列 H列 1行 1 1 1 2 2行 2 2 3 2 VBAで実現したいと思います。 何卒、宜しくお願い申し上げます。
- ベストアンサー
- オフィス系ソフト
- EXCEL VBAで数式の追加変更を行いたい
VBA初心者です。 下記の様な表を作成して、月末の累計処理を行っています。 表 A B C D 1 部署 累計 1月 2月 2 a 2000 1000 1000 3 b 1800 1000 800 : : : B2セルに、(=C2+D2)という式を入れています。 月末あらたに、E列に表を追加作成し、B2セルの数式を(=C2+D2+E2)に変更したいと思っていますが、VBAで数式の取得変更は可能ですか? もし可能であるなら、どういったプログラム記述になるのか、教えて頂きたいです。 宜しくお願い致します。 (説明している表がわかりにくくて、申し訳ありません。)
- ベストアンサー
- その他(プログラミング・開発)
- Excel セルの値で行を選ぶ
Excel セルの指定に関して質問です。 セルの値で列(行)を選択するにはどうするのでしょうか? 例えば B5に "3"が入っていたらC列(C4セル)、"4"が入っていたらD列(D4セル) を参照するというような具合に、ある特定のセルの値によって参照する列を変えたいのですが。 R1C1形式中にセルの参照をさせれば可能になりそうですが記述方法が分かりません。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAで設定したセルの値
エクセルVBAについての質問です。 例えば、A1とB1のセルの値を参照している数式がC1セルに設定してあるとします。 さらに、D1のセルにはC1の値を参照している数式が設定してあるとします。 VBAでA1、B1のセルの値を変更したとします。 次のステップのVBAでC1、D1のセルを参照すれば、A1、B1の変更が反映された後の正しい値である C1、D1の値が取得できるのでしょうか? できて当たり前だと思うのですが、セルに設定してある数式が大変複雑であったりすると、ちゃんとA1、B1の変更が反映された正しいC1、D1セルの値がVBAで取得できるのかちょっと不安です。 ばかな質問かもしれませんが、回答をよろしくお願い致します。
- ベストアンサー
- その他MS Office製品
- Excel VBA 値取得について
お世話になります。 どなたかお力をお貸しください。 Excel2003 VBAでプログラムを組んでおり、エクセルのシートをデータベース代わりに利用しています。 複数のブック散乱している10万個近くのテキストボックスの値を、 「A」というブックの「シート1」のセルに格納して行きたいと思っております。 値の格納方法としては、「A」ブックの「シート1」の セルA1からA2、A3…A列最終行(6万強)まで縦の並びにデータを格納していきます。 ただし、「シート1」に格納したい値は10万個近くあるので、 A列だけでは足りなくなります。 A列の最終行まで値を格納し終えたら、自動的にB列に移動して、 セルB1からB2、B3…B列最終行(6万強)という遷移させていきたいのです。 A列のみに格納していくのであれば、理解できるのですが、 自動遷移がわかりません。 For i = 0 To 最終行(6万強) シート1.Range("A" & i) = 参照元 Next i よろしくお願いします。
- 締切済み
- Visual Basic
- 選択した行の値だけを合計
選択した行の値だけを、その行のどのセルをダブルクリックしても合計する方法を教えてください。 A列は、ID,B・C列は値があらかじめ入力されています。 D列に、合計を表示させたいです。 関数・VBAでは、一括して合計はでましたが、VBAで必要な行だけの合計の出し方がわかりません。 VBAの勉強のために活かしたいく、よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- エクセルVBAについて
以下の処理をマクロで実行しようと思っていますが、わからない部分があるので教えてください。 (例): A B C D E F G 1 1 2 3 4 5 6 7 2 10 30 50 70 90 130 150 3 4 (1)1行目のどこかの連続したセル(例えばセルA1から セルD1)をドラッグする。 (2)マクロを実行する。 (3)セルA4に、「D2-A2」を計算した値が自動的に入力 される。この例では「70-10=60」 これは、(1)で例えばセルB1からF1をドラッグした場 合には、「F2-B2」を計算した値を入力したいので す。 要は、連続したセルを選択してその始点と終点のセルの行と列を取得できればこの処理はできると思うのですが、方法が分かりませんので教えてください。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
- Excel VBAで値が重複する行を削除する
Excel2000を使っています。 シートAに数千件のデータがあります。 シートBのE列にある文字とシートAのD列の文字が重複する場合に、シートAの重複するセルがある行を削除する(且つできれば行のデータを抜き出すVBAを作ろうと考えています。 最近VBAの初心者本をやっと理解したところで、ちんぷんかんぷんとまではいかないけど、知恵熱がでました。 仕事なので自分でなんとかすべきかと思いますが、きっかけの調べ方がまずわからない。 どなたか、解かるきっかけだけでも与えて頂けないでしょうか。とくに、別シートの値と重複する値を探す場合に何をいれるかわかればきっと道は開けると思うんですが…。 初めての質問なので、質問内容が至らなかったらもうしわけありません。
- 締切済み
- オフィス系ソフト
- エクセル関数式により、列の最後尾から2行目の値からの最大値の求め方。
エクセル関数式により、列の最後尾から2行目の値からの最大値の求め方。 初めまして、よろしくお願いします。 A B C D E 1 赤 青 黄 緑 黒 2 3 4 1 3 2 0 9 5 9 1 3 4 3 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 112 4 6 1 9 6 113 7 7 5 8 1 114 6 9 1 3 7 115 7 2 5 0 116 8 0 0 という表があります。 各列の空白、もしくは0の入力されている後の値(A列では8、B列では9、C列では2、D列では5、E列では7)を最後尾とし、そこから2行目の値(A列では6、B列では6、C列では5、D列では8、E列では6)からの列(A列ではA4の1まで、B列ではB4の3まで、C列ではC4の2まで、D列ではD4の0まで、E列ではE4の9まで)の間の値の最大値(A列で、見えている部分のみではA5の9になります)を抜き出すことのできる関数式の方法がありましたら、教えていただきたく。よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- EXCEL VBAで複数のシートの中から該当値を検索する方法について
すいません、EXCEL VBAで複数のシートの中から該当する値を検索する方法について教えていただきたいことがあります。 Sheet1 A列 B列 C列 1行 11 りんご 31 2行 12 バナナ 32 3行 13 みかん 33 4行 14 ぶどう 34 ・ ・ ・ ・ Sheet2 A列 B列 C列 1行 31 すいか 11 2行 32 レモン 12 3行 33 パイン 13 4行 34 ざくろ 14 ・ ・ ・ ・ というデータが入っているブックについて 「全部のシートを検索し、A列に11の値が入っているセルの行数及びその行のB列の値」 をSheet1のD1セルとE1セルにそれぞれ返す方法はどうしたらよろしいんでしょうか。 For Each を使うのではないかと思って色々やってみたのですが、どうも上手く作動してくれません。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
お礼
hige_082さん、ありがとうございます。 とても参考になりました!