ID,CODE,COVERAREAという項目の配列があります。
IDは0~630、CODEは1~12まであり、それぞれに対応した値(CODEAREA)
があります。すべてのCODEにIDは対応しておらず、抜けている数字もありランダムに並んでいます。コードごとに並べ替えると以下のような感じです。
例)ID = 35, CODE = 1, CODEAREA = 36970.94673
  ID = 489, CODE = 1, CODEAREA = 36970.9467(実際の数値はすべて違います)
  ID = 23, CODE = 1, CODEAREA = 36970.94673
  ID = 7, CODE = 1, CODEAREA = 36970.94673
  ID = 95, CODE = 1, CODEAREA = 36970.94673
  ID = 195, CODE = 1, CODEAREA = 36970.94673
  ID = 503, CODE = 1, CODEAREA = 36970.94673


IDごとにCODEの値(CODEAREA)をまとめたい(以下参照)のですが、量が多すぎてどうにもなりません。

  ID CODE COVERAREA
   103 1 27573.3754
   103 2 27573.3754
   103 3 27573.3754
   103 4 0
   103 5 27573.3754
   :

この処理に適した関数、計算の仕方を教えてください。
お願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

EXECLでサンプルマクロ作成しました。

何分まだ慣れてないのでその点はご了承を

バックアップは忘れずに
まずIDとcodeで「並べ替え」をします。
A列ID
B列Code
C列CODEAREA
としてください。
並び替えたデータを選択して切り取り頭をA2へ貼り付けてください。
ツール マクロ マクロ
と進みマクロ名に任意の名前(ここではaaaaa)を付け作成をクリックしてください

VBediterが開くのでsub aaaaaとend subの間に

y = 0
For ID = 0 To 100
For Code = 1 To 12
y = 12 * ID + Code + 1
Cells(y, 1).Select
If Cells(y, 1) = "" Then Selection.EntireRow.Delete
If Cells(y, 1).Value <> ID Or Cells(y, 2).Value <> Code Then Selection.EntireRow.Insert: Cells(y, 1) = ID: Cells(y, 2) = Code: Cells(y, 3) = 0

Next Code
Next ID
End

のコードをコピーしてください
後はツール マクロ マクロ 実行します
    • good
    • 0
この回答へのお礼

ありがとうございました。なんとか解決しました。
みなさまのおかげです。

お礼日時:2002/01/10 22:11

ACCESSの場合で回答します。


テーブル名が"TABLE1"
フィールド名が「ID」「CODE」「COVERAREA」
で構成されていると仮定します。

新規クエリを作成し、以下のSQL文をSQLビューに貼り付けると、
「ID」「CODE」をグループ化し「COVERAREA」の合計を取ることが出来ます。

Select ID,CODE,Sum(COVERAREA) AS COVERAREA計 from TABLE1
Group by ID,CODE;

ACCESSの場合、グループ化をかけるとGroup byの項目順に勝手に並び替
えてくれるようです。
また、「COVERAREA」が"Null"の場合もSum関数を使えば"0"として見てく
れます。
    • good
    • 0

補足です



”=IF(C1="",0,C1)” を入れた後、D列を項目の行だけ
選択してコピーしてください。
自動的にC2,C3に変わります。
行き過ぎるとそこも0が入ってしまいます。

VBAなどで組めばもっといい方法があると思いますが

この回答への補足

ご回答ありがとうございました。
たびたびすみません。データの抜けているところは行そのものが存在しません。

ID   CODE    COVERAREA
2 2 27852.76563
2 8 1660.632813
2 9 1865.390625
2 12 900

抜けている行を作成し、ID,CODE、0値を入れたいのですが・・・

補足日時:2002/01/10 17:53
    • good
    • 0

ID CODE COVERAREAの列は分かれているのでしょうか?


分かれているなら#1の方がいわれているようにしてみましょう

A1 ID
B1 CODE
C1 COVERAREA

になっているとします。その隣(D列)にもうひとつCOVERAREAを作成してそこに
   ”=IF(C1="",0,C1)”
を入れれば抜けてるところも0が入ります
そしてC列を削除すれば大丈夫だと思うのですが

この回答への補足

たびたびすみません。データの抜けているところは行そのものが存在しません。
並び替えを行うと以下のような感じです。

ID   CODE    COVERAREA
2227852.76563
281660.632813
291865.390625
212900

抜けている行にID,CODE、0値を入れたいのですが・・・

補足日時:2002/01/10 17:49
    • good
    • 0

エクセルで言うと、IDとcodeで「並べ替え」をすればいいと思うのですけど。


はずしていたらごめんなさい。

この回答への補足

並べ替えて新しいシートにカット&ペーストしてたんですが、何しろ3000行くらいあるんで手がつってしまいました(泣)
各IDのCODEごとのCODEAREAの合計とかも求めなきゃならないんで抜けてるところとかも0値をいれて出力しなおしたいということなんです。
やっぱ地道にやるしかないんかな・・・・

補足日時:2002/01/09 02:22
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVSAM,QSAM,BSAM,BPAM,BDAM

データセット編成とアクセス法に関してですが、それぞれ、どのようなデータセットとして使われることが多いですか?データを入れるとか…、プログラムを入れるとか…。

Aベストアンサー

メインフレームの世界ですね。私が使い慣れているのは
NEC製ですが、共通項が多いので説明します。

> BPAMがプログラムライブラリーか?
簡単にはその通りです。
プログラムだけではないですが、順編成のサブファイル
を複数格納可能な編成方式のファイル(ライブラリ)を
意味します。

> VSAMがDB?QSAM,BSAMがテープとディスクか?
VSAMはDBの原型みたいなものです。
カタログ/VSAMファイル本体以外にジャーナルを持ち、
COMMIT,ROLLBACK制御も可能です。
QSAM,BSAMはVSAMアクセスの動作方式のことで
す(プログラム中では意識する必要ありません)。

> BDAMはディスクか???
これもアクセス方式ですね。目的レコードの相対アドレ
スを指定してアクセス(READ/WRITE)する方式です。

> DBやJCL、ファイルを入れる場合はBPAMか?
DBは別物です。JCL、プログラム等が格納されるファイル
の形式(編成)がBPAMです。

> ボリュームという言葉があるけれど、データ編成で考えてはいけないのか?
ボリュームとは例えば磁気テープ1本、磁気ディスク1
スピンドルといった補助記録媒体の単位です。
→ 磁気ディスクには1ボリューム中に複数の異なる
  データ編成のファイルを作成可能です。

> ボリュームはどのようにできているのか?
VTOCおよびデータ領域です。

> ボリュームより大きいものはなんと言うのか?
通常ボリュームグループという概念があります。
→ この概念が無いとマルチボリュームファイルは作成
  できませんから・・・。

> 機能は、ちゃんと読んでみます。データ編成は他にもありそうな…。
NECの場合だと、相対編成、乱編成、待機結合編成なんて
のもありますね。

> ファイル編成とデータセット編成は同じことだよな…。???
大体において同じ意味で使用しているケースが多いです。

私の会社ではまだメインフレーム現役です・・・。

メインフレームの世界ですね。私が使い慣れているのは
NEC製ですが、共通項が多いので説明します。

> BPAMがプログラムライブラリーか?
簡単にはその通りです。
プログラムだけではないですが、順編成のサブファイル
を複数格納可能な編成方式のファイル(ライブラリ)を
意味します。

> VSAMがDB?QSAM,BSAMがテープとディスクか?
VSAMはDBの原型みたいなものです。
カタログ/VSAMファイル本体以外にジャーナルを持ち、
COMMIT,ROLLBACK制御も可能です。
QSAM,BSAM...続きを読む

Qクエリのフィールドに 式1:DateAdd("d",-2,Date()

クエリのフィールドに 式1:DateAdd("d",-2,Date()) と入力し、実行すると、2日前の日付ではなく、2年前の同じ日付となってしまいます。何が原因か分からず困惑しています。ご教授よろしくお願いいたします。

Aベストアンサー

http://groups.google.az/group/microsoft.public.jp.access/browse_thread/thread/7512043f698bb493
行き詰まったのでGoogle。
上記ではレスがつかなくてOSの再インストールまでしたそうです。
(クリックしても飛ばないかもしれませんのでその際はアドレスをコピペ)
どうも似たような症状。

初心に立ち返って、思いつくままに。
・メニューのヘルプから『アプリケーションの自動修復』
・新規データベースでも発生するか
・ADOのバージョンが古いので、2.5まで上げてみる。Microsoft ActiveX Data Object 2.5 Library
2.1のチェックは外して、プルダウンメニューの中央辺りに2.5があります。
最新は多分、2.8以降になっているかと思います。
・メニューから(VBEでは無い方)『ツール』→『オプション』→『全般タブ』
新規データベースの並び順が、日本語 UniCode であれば、日本語に変更。
これで新たに作ってみて試す。
これで駄目なら私は降参です。

※Microsoft DAO 3.6 Objects Libraryのチェックは戻して置いてください。

http://groups.google.az/group/microsoft.public.jp.access/browse_thread/thread/7512043f698bb493
行き詰まったのでGoogle。
上記ではレスがつかなくてOSの再インストールまでしたそうです。
(クリックしても飛ばないかもしれませんのでその際はアドレスをコピペ)
どうも似たような症状。

初心に立ち返って、思いつくままに。
・メニューのヘルプから『アプリケーションの自動修復』
・新規データベースでも発生するか
・ADOのバージョンが古いので、2.5まで上げてみる。Microsoft ActiveX Data Object 2.5 ...続きを読む

QAccess 2010 VBAで日付ごとカテゴリごとの受付番号取得

はじめまして。

問い合わせのインシデント管理をAccess 2010で行うこととなり、VBAが必要となりました。
下記のようなことができるのか教えていただけたら幸いです。

メインのテーブル
 ┗受付ID(オートナンバー)、受付日時(日付/時刻型)、カテゴリ名(ルックアップ)、ほか

カテゴリのテーブル
 ┗カテゴリID(オートナンバー)、カテゴリ名、カテゴリ_略

  サンプル
  1 Excel EX
  2 Word WD
  3 PowerPoint PP

メインのテーブルを元に入力フォームを作成しました。
そこに配置している【受付日時】とフォームで選択した【カテゴリ名】を元に
日付ごとカテゴリごとの受付番号を取得し、フォームに表示すると共に
メインのテーブルに蓄積したいのですが、可能でしょうか?

テーブルの主キーは受付ID/オートナンバーにしていますが、
それとは別に上記のような受付番号を取得したいのです。
その際に YYYYMMDD_0001_xxx という書式で取得できたらと思っています。

 YYYYMMDD:受付日時の年月日
 4桁の番号は日付が変わるとまた1からカウント
 xxx:カテゴリ_略(カテゴリのテーブルの3列目)

 サンプル:20160725_0001_EX

どうぞよろしくお願いいたします。

はじめまして。

問い合わせのインシデント管理をAccess 2010で行うこととなり、VBAが必要となりました。
下記のようなことができるのか教えていただけたら幸いです。

メインのテーブル
 ┗受付ID(オートナンバー)、受付日時(日付/時刻型)、カテゴリ名(ルックアップ)、ほか

カテゴリのテーブル
 ┗カテゴリID(オートナンバー)、カテゴリ名、カテゴリ_略

  サンプル
  1 Excel EX
  2 Word WD
  3 PowerPoint PP

メインのテーブルを元に入力フォームを作成しました。
...続きを読む

Aベストアンサー

連番が変化しない方がいいと思いテーブルに連番を作成する方法を回答したのですが
クエリで行いたいならこちらを参考に作成してみてください。

http://www.relief.jp/itnote/archives/003569.php

Q【SQL文】 where (colA & colB) in ((1 & 1), (2 & 2)) とは?

VB6のプログラムを読んでいたら、ACCESSのMDBにSQL文を
投げる際に以下のような記述がありました。

------------------------------------------------------
select * from tableA
where (colA & colB) in ((1 & 1), (2 & 2))
------------------------------------------------------

これはどういったことを表しているのでしょうか?

雰囲気的には
(colA, colB) の組み合わせが (1, 1) か (2, 2)
というようなことを表しているのかなと思うのですが
はっきりとわからなかったため質問させていただきました。

また、これはOracle等の他のDBでも使用できる構文
なのでしょうか?

ご存知の方がいらっしゃいましたら教えていただけたらと
思います。

Aベストアンサー

<IN=集合>

WHERE節のキーワード INに値を列挙することで、その値を持つ列を抽出することができます。

<列名> [NOT] IN (<値1>,<値2>,...<値n>,)

SELECT * FROM 得意先一覧 WHERE 郵便番号 IN ('8300001', '8300002')

Informix、SQL Sever では、このように書きます。
ですから、構文としては共通した書き方です。
ただし、Access では、演算子をSQLのそれでなくVBAのそれが通用します。

・文字列の加算・・・&
・'11' と 11とで型照合エラーが発生しない。

などです。

ですから、Access 以外では、次のような書き方が一般的。

[イミディエイト]
? DBSelect("SELECT * FROM A WHERE 列1+列2 IN ('1'+'1', '2'+'2')")
1;2;2;
2;1;1;

この場合、列1と列2の組合せが1+1、2+2 を取得しています。

ただし、示されているコードはバグに近い書き方です。

[イミディエイト]
? DBSelect("SELECT * FROM A WHERE 列1+列2 IN ('11'+'11', '22'+'22')")
1;11;11;
2;22;22;
3;111;1;

[イミディエイト]
? DBSelect("SELECT * FROM A WHERE 列1+'/'+列2 IN ('11/11', '22/22')")
1;11;11;
2;22;22;

この2つではヒットするレコードが違います。
ちょっと、問題ありかと思います。

<IN=集合>

WHERE節のキーワード INに値を列挙することで、その値を持つ列を抽出することができます。

<列名> [NOT] IN (<値1>,<値2>,...<値n>,)

SELECT * FROM 得意先一覧 WHERE 郵便番号 IN ('8300001', '8300002')

Informix、SQL Sever では、このように書きます。
ですから、構文としては共通した書き方です。
ただし、Access では、演算子をSQLのそれでなくVBAのそれが通用します。

・文字列の加算・・・&
・'11' と 11とで型照合エラーが発生しない。

などです。

ですから、Access...続きを読む

QSQLiteで「UPDATE table1 SET cnt+=1」のようなことがしたいのですがどう書けばいいですか?

adobe AirにてSQLiteを使っています。

ある値を加算してやりたいのですがmySQLと同じ書き方ではできませんでした。下の2つの書き方はいずれもだめでした。
UPDATE table1 SET cnt+=1
UPDATE table1 SET cnt=cnt+1

どのように書けばいいのでしょうか?
よろしくおねがいします。

Aベストアンサー

SQLの基本的な構文であり、MySQLとは違うといったことはありません。

update 表名 set 列名=列名+1

>mySQLと同じ書き方ではできませんでした。下の2つの書き方はいずれもだめでした。

「だめ」とは、具体的にどうなるのですか?
文法エラー?
更新しているはずなのに、値が変わっていない?


人気Q&Aランキング

おすすめ情報