- ベストアンサー
ExcelマクロでAccessデータを累計処理
Excel2010のVBAでAccess2010のデータをDAOで操作しています。 そこで、下記のような加算処理(bフィールドでaフィールドの累計)ができるのでしょうか。また、更新クエリで このようなことができるものなのでしょうか??Access初心者です。 a b 10 10 20 30 15 45 30 75
- crown8803
- お礼率25% (1/4)
- その他(プログラミング・開発)
- 回答数3
- ありがとう数2
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
a b 10 10 20 30 15 45 30 75 このように順番に加算してゆくためには、別途並び順に利用できるフィールドが必要です。 X a 1 10 2 20 3 15 4 30 ↑このようなものなら、bフィールドはクエリで b:dsum([a],"[X] <= " & [X]) とすれば求められます。 更新クエリでテーブルのbフィールドを変更するには フィールド:b テーブル:テーブル名 レコードの更新:dsum([a],"[X] <= " & [X]) です。 https://www.moug.net/tech/acvba/0080017.html
その他の回答 (2)
- nicotinism
- ベストアンサー率70% (1019/1452)
piroin654 さん ナイスフォローです。 ありがとうございます。 そして質問者さん、ごめんなさい。 どうかしてますね、私。 言い訳になりますが、風邪をひいているようで、 今日一日、頭痛と筋肉痛で廃人状態でした。 今、少し楽になったので書き込みました。 皆様もご自愛くださいませ。 明日もおかしいかもしれないので、piroin654 さん あとはお願いします。
- piroin654
- ベストアンサー率75% (692/917)
nicotinismさん、テーブルの指定が抜けていますよ。 以下のように書き変えてみてください。 DSum("a","テーブル1","X<=" & [テーブル1].[X]) 「 こちらでもいいのかな DSum("a","テーブル1","X<=" & [X]) 」 なお、EXCELから直接SQL文を発行して実行するには、たとえば Sub test() Dim db As DAO.Database Dim strSQL As String strSQL = "UPDATE テーブル1 SET テーブル1.b = DSum(""a"",""テーブル1"",""[X]<="" & [テーブル1].[X]);" Set db = OpenDatabase("C:\Temp\sample.mdb") db.Execute Query:=strSQL db.Close: Set db = Nothing End Sub のようにします。VBAの中ではDSumの引数を二重に「"」で囲んでいることに注意を してください。クエリのSQL文を取り出すと、 UPDATE テーブル1 SET テーブル1.b = DSum("a","テーブル1","[X]<=" & [テーブル1].[X]); のようになっていると思いますが。 EXCELから更新を直接できればいろいろと便利かもしれません。
関連するQ&A
- ExcelからAccessデータを検索するマクロ
Excel、Accessとも初心者です。 下記を参考にさせて頂いております。 http://okwave.jp/qa/q441987.html これを、(1)~(3)に対応させたいのですが どのように書き換えればよろしいのでしょうか? (1)A1→ A列の最後まで (2)対応するレコードフィールド2 → 規定した複数のレコードフィールド (例えば、フィールド3とフィールド5とフィールド8) (3)Excel, Accessともに2007です。 (4)検索の経過は表示させない (少しでも早く処理したい。ひとつひとつ検索結果を表示すると遅くなると聞ききました) ・・・・・・・・・・・・・・・・・・・・・・・・・ Sub Macro1() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = OpenDatabase("c:\abc.mdb") Set rs = db.OpenRecordset("tbl_a", dbOpenDynaset) rs.FindFirst "[フィールド1]='" & Range("A1").Value & "'" If rs.NoMatch Then Range("B1").Value = "" Else Range("B1").Value = rs![フィールド2] End If rs.Close Set rs = Nothing Set db = Nothing End Sub ・・・・・・・・・・・・・・・・・・・・・・・・・ よろしくご教授お願いします。
- 締切済み
- オフィス系ソフト
- AccessのデータをExcelに貼り付け
AccessのデータをフィルターしてExcelに貼り付けるには、AccessとExcelのどちらのVBAを使えば良いでしょうか。 前提:Accessに10フィールド100行くらいのデータがあり、Excelに氏名と日付を入力する欄がある。 処理:AccessのデータをExcelに入力した氏名と日付でフィルター(AND検索)→フィルターしたままExcelに貼り付け→そのデータをExcelの関数とVBAで処理(複雑な関数なのでAccessで処理できない)
- 締切済み
- Access(アクセス)
- Accessのクエリで累計の出し方
Accessのクエリで累計の出し方を教えてください。 できれば、クエリで関数による算出方法、クエリでの算出が無理であれば、 VBAでの算出方法を詳しく教えて頂けないでしょうか。
- ベストアンサー
- オフィス系ソフト
- クエリの同期処理
お尋ねします。 アクセス2000でDBを作っています。 全く同じフィールドを持つクエリを2つ作成し、用途に応じて、クエリAとクエリBの2つを使い分けする予定です。 ふたつのクエリは常に全く同じレコードを保持するようにしたいのですが、マクロまたはVBAでどう作ればいいでしょうか? たとえば、クエリAをソースに作ったフォームAでレコードを更新後、クエリBのレコードを同期する。逆に、クエリBをソースに作ったフォームBでレコードが更新されたらクエリAのレコードを同期する。 フォームA、Bそれぞれの更新後処理で同期化を設定すればいいのかなと思いますが、どなたか教えてください。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
- Access2000のVBAでエクセルマクロ実行
お世話になります。 Access2000のVBAでエクセルのマクロとアクセルのマクロを 交互に実行したいと思っております。 (1)エクセルのマクロ1を実行 (2)アクセスのマクロAを実行 (3)エクセルのマクロ2を実行 と交互に実行したいのです。 下記のサイトなどを参考に試みたのですが、 http://www.nurs.or.jp/~ppoy/access/access/acX005.html (1)を実行している途中に (2)が進んでしまいます。 どのようにすれば、(1)が終わってから(2)と、前の処理が 終わってから次の処理に進むことが出来るのでしょうか? Access2000のVBAから指示をかけたいので、 Access2000のVBAのコードで教えて頂ければと 思います。
- ベストアンサー
- Visual Basic
- AccessからExcelへ出力
Access2003からExcel2003へ出力したいのですが、 クエリに3つのフィールドがあるとして、 1つ目のフィールドをExcelの1行目、 2つ目を2行目、3つ目を3行目とゆうことはできるのでしょうか? VBAは勉強中です。 よろしくお願いします。
- ベストアンサー
- その他(データベース)
- Excel と Access または、Access と Excel との連携処理
(1)(初期処理として)、Excel(1.xls)よりアイテムセットしたパラメータ(起動するAccessのパス名)でAccess(A.mdb)を起動する。 (2)Access(A.mdb)の自動処理が終わると、次に起動させるAccess(B.mdb)のパスパラメータをExcel(1.xls)に渡し、Access(A.mdb)を終了する。 (3)パラメータを受け取ったExcel(1.xls)は、Access(B.mdb)を起動し、処理をする。 (1)より開始して、(2)(3)の繰り返し出来る方法を教えてください。 よろしくお願いします。
- 締切済み
- その他(プログラミング・開発)
- ExcelからAccessデータを検索するマクロ
ExcelのA1セルにある値をAccessのデータベース (ファイル名:abc.mdb、テーブル名:Tbl_a)の フィールド1から検索し、対応するレコードの フィールド2の値をExcelのB1セルに書き込む というマクロはどのように書けばよいのでしょうか? Excel, Accessともに2000です。 よろしくご教授お願いします。
- ベストアンサー
- オフィス系ソフト
- Accessのクエリーで累計を計算したい
Accessのレポートでは、計算したいフィールドのプロパティを開いて、集計実行で指定すれば、自動的に累計計算してくれるのですが、クエリーの状態で累計計算させるのには、どうしたらいいのでしょうか。何方かご存知の方はいらっしゃいませんでしょうか。
- ベストアンサー
- オフィス系ソフト
- ExcelデータをAccessに取得させる方法
エクセル Access A列 B列 C列 フェールド名 人 りんご みかん ばなな キャベツ リンゴ 3 木村 木村 3 2 みかん 2 木村 小林 4 ばなな 4 小林 青木 2 キャベツ 2 青木 のようにエクセルのデータでA列をAccessのフィールド名にし、もし無ければ、その項目名(りんご等)をフィールド名に追加させ、上の右図のようにAccessにデータを取得させるコードを作りたいと考えてます。 取得させる場合はExcellではなく、Access VBAで取得させたいです。 どんなコードを書いたらよろしいのですか? 分かる方がおられましたら、よろしくご指導くだされとうれしいです。 私のVBAのレベルですが、Access VBAは今回初めてで、Excel VBAは中級くらいかと思います。 よろしくお願いします。
- 締切済み
- その他MS Office製品
お礼
ありがとうございます。 Access2010に下記データを「テーブル1」に格納して X a b 1 100 2 100 3 150 4 50 X,a,bは数値型です。 Access2010の更新クエリで フィールド:b テーブル:テーブル1 レコードの更新:DSum([a],"[X] <=" & [X]) を実行すると、 「更新クエリで全てのレコードを更新できません。」 「4個のフィールドで型変換エラー、0件のレコード....」 のメッセージが表示され「はい」をクリックしてもデータが更新されません。うっー、分からない???