tossy005のプロフィール
- ベストアンサー数
- 7
- ベストアンサー率
- 38%
- お礼率
- 0%
- 登録日2008/08/22
- エクセルVBAによる不連続データ群の合算と、ワークシートをまたぐ連続処理について
エクセルのVBAによる、合算処理が上手くいかずに困っています。 現在の状況ですが、1つのワークブックト中に、 いくつかのシートに分かれたデータ群があります。 それぞれのシートごとのデータ群で合算したいと思っています。 1つのデータ群に対してのVBAは作成できたのですが、 それぞれのデータ群ごとに合算しつつ、シートをまたいで 連続処理することができません。 お知恵を拝借できれば幸いです。 Workbook Sheet1の内容 [ A ][ B ][ C ][ D ][ E ] [ 1] 日付 品名 予算 金額 差額 [ 2] 3/1 aaa 1000 200 800 [ 3] 3/1 bbb 500 100 400 [ 4] 3/1 ccc 600 200 400 [ 5] 合計 2100 500 1600 [ 6] [ 7] 日付 品名 予算 金額 差額 [ 8] 2/1 ddd 1000 500 500 [ 9] 2/1 eee 2000 600 1400 [10] 2/1 fff 1800 1200 600 [11] 合計 4800 2300 2500 [12] [13] 日付 品名 予算 金額 差額 以下、同一シート内にデータ群が続いていき、 さらにWoorkbook Sheet2, Sheet3 ..... と続きます。 以下、自作のVBA Sub sample() Dim my_last_row As Long '最終行の行数用 Dim my_last_address_sum As Long '最終行から一つ下のセル(合計用のセル)のアドレス取得用 my_last_row = Range("D65536").End(xlUp).Row my_last_address_sum = Range("D65536").End(xlUp).Offset(1).Address(RowAbsolute:=False) '=sum関数の埋め込み Range(my_last_address_sum).Formula = "=sum(C1:" & "C" & Format(my_last_row) & ")" '=sum関数を埋め込んだセルのコピー Range(my_last_address_sum).Copy '=sum関数を埋め込んだセルから、右に1つ分だけセルを移動する Range(my_last_address_sum).Offset(0, 1).Select '移動したセルを基準にして、右に2つ分だけセルを拡張する(合計3セルを選択する) Range(ActiveCell, ActiveCell.Offset(0, 2)).Select '選択した3つのセルに対して、=sum関数を埋め込んだセルのペーストする ActiveSheet.Paste 'セルA1に戻る Range("A1").Select End Sub
- ベストアンサー
- Visual Basic
- RoToTo3
- 回答数10
- ACCESS テーブル同士の照合
テーブルAとテーブルBの照合がしたいのですが (AとBはフィールド名、データ型等全てが同じ) 項目が多く、クエリーの結合プロパティで一つ一つ設定するのが面倒です AとBを単純に照合出来る方法は無いでしょうか?
- 変数にいれる値
企業毎にシートに分け集計させている集計表があるのですが 他シートから日付をとりMonthで月の数値を取得し3列の詳細項目の後に集計させています。 tugi = 3 + Month(.Cells(list_cnt, intBASE)) 例えば取得した日付が4月であれば7列目に集計させています。 現在は1月初まりなので3列の説明項目後に集計させているのですが 今後4月初まりとなるので、 tugi = Month(.Cells(list_cnt, intBASE)) と書き換えたのですが「型が違います」とでてしまいます。 tugi = 0 + Month(.Cells(list_cnt, intBASE)) としても同じエラーでだめでした。 試しに tugi = 1 + Month(.Cells(list_cnt, intBASE)) としたら正常に実行できました。 あまりVBAには詳しくないのでこれ以上どう修正したらいいのか わかりません。 何かご指摘頂けたらありがたいです。
- ベストアンサー
- Visual Basic
- maki06
- 回答数8
- ACCESSのクエリについての質問です。
社員名簿のクエリの方法で悩んでいます。社員名簿のテーブルには「入社日」「退職日」と産前産後休暇や怪我等で長期休暇をとる従業員も少なくないものですので「長期休務開始日」「復職日」の4つの日付があります。 たとえば9月1日から9月30日に在籍していた社員をクエリで抽出するために 「入社日」の抽出条件に→ <=#2008/09/30# 「退職日」の抽出条件に→ >=#2008/09/01# Or Is Null と入社退社に対しては分かるのですが、 「長期休務開始日」「復職日」をどうしたらいいか分かりません。(半日悩みました) アクセスに詳しい方よろしくお願いします。 よろしくお願いします。
- エクセルのマクロで上のセルの数式を相対参照でコピーしたい(フィルみたいに)
エクセル2002で以下のようなシートがあります。 | A | B | C | D --------------------------- 1 | 1| 10| 100| =C1-1 --------------------------- 2 | | | | ここで、B2に文字が入力されると、A1とC1とD1をコピー、B2が消されるとA2とC2とD2を消去するマクロを書きました。 現在以下のように書いていますが、これでは入力位置がB2だろうがB3だろうかB20だろうが、D2と同じ数式になってしまいます。B5に入力されたならD5の数式はC5-1にしたいのですが、このような入力をするにはどうすればよいでしょうか。 ちなみにD列の数式は本当はもっと複雑です(この数式ならTarget.Offset(0, -4).Value = Int(Target.Offset(-1, -4).Value + 1でもたぶんいい・・・はず・・・) オートフィルを使えば!と思いましたが、Target・・・では使い方がわかりません。 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Column <> 2 Then Exit Sub //B列以外への文字入力はマクロ停止(のつもり) If Target.Value <> "" Then Target.Offset(0, -1).Value = Int(Target.Offset(-1, -1).Value + 1) //A1に+1したものをコピー Target.Offset(0, 1).Value = Target.Offset(-1, 1).Value //C2にC1をコピー Target.Offset(0, 2).Formula = Target.Offset(-1, 2).Formula //D2にD1の数式をコピー◆ここが問題! Else Range(Target.Offset(0, -1), Target.Offset(0, 4)).ClearContents End If Application.EnableEvents = True End Sub