- ベストアンサー
表計算(Excel,Access)の関数を教えてください
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 : この処理に適した関数、計算の仕方を教えてください。 お願いします。
- みんなの回答 (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 のコードをコピーしてください 後はツール マクロ マクロ 実行します
その他の回答 (4)
- sgh
- ベストアンサー率61% (75/121)
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"として見てく れます。
- kankon
- ベストアンサー率20% (12/60)
補足です ”=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値を入れたいのですが・・・
- kankon
- ベストアンサー率20% (12/60)
ID CODE COVERAREAの列は分かれているのでしょうか? 分かれているなら#1の方がいわれているようにしてみましょう A1 ID B1 CODE C1 COVERAREA になっているとします。その隣(D列)にもうひとつCOVERAREAを作成してそこに ”=IF(C1="",0,C1)” を入れれば抜けてるところも0が入ります そしてC列を削除すれば大丈夫だと思うのですが
補足
たびたびすみません。データの抜けているところは行そのものが存在しません。 並び替えを行うと以下のような感じです。 ID CODE COVERAREA 2 2 27852.76563 2 8 1660.632813 2 9 1865.390625 2 12 900 抜けている行にID,CODE、0値を入れたいのですが・・・
エクセルで言うと、IDとcodeで「並べ替え」をすればいいと思うのですけど。 はずしていたらごめんなさい。
補足
並べ替えて新しいシートにカット&ペーストしてたんですが、何しろ3000行くらいあるんで手がつってしまいました(泣) 各IDのCODEごとのCODEAREAの合計とかも求めなきゃならないんで抜けてるところとかも0値をいれて出力しなおしたいということなんです。 やっぱ地道にやるしかないんかな・・・・
お礼
ありがとうございました。なんとか解決しました。 みなさまのおかげです。