• ベストアンサー

表計算(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    : この処理に適した関数、計算の仕方を教えてください。 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kankon
  • ベストアンサー率20% (12/60)
回答No.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 のコードをコピーしてください 後はツール マクロ マクロ 実行します

onmyo
質問者

お礼

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

その他の回答 (4)

  • sgh
  • ベストアンサー率61% (75/121)
回答No.4

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)
回答No.3

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

onmyo
質問者

補足

ご回答ありがとうございました。 たびたびすみません。データの抜けているところは行そのものが存在しません。 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)
回答No.2

ID CODE COVERAREAの列は分かれているのでしょうか? 分かれているなら#1の方がいわれているようにしてみましょう A1 ID B1 CODE C1 COVERAREA になっているとします。その隣(D列)にもうひとつCOVERAREAを作成してそこに    ”=IF(C1="",0,C1)” を入れれば抜けてるところも0が入ります そしてC列を削除すれば大丈夫だと思うのですが

onmyo
質問者

補足

たびたびすみません。データの抜けているところは行そのものが存在しません。 並び替えを行うと以下のような感じです。 ID   CODE    COVERAREA 2 2 27852.76563 2 8 1660.632813 2 9 1865.390625 2 12 900 抜けている行にID,CODE、0値を入れたいのですが・・・

noname#83007
noname#83007
回答No.1

エクセルで言うと、IDとcodeで「並べ替え」をすればいいと思うのですけど。 はずしていたらごめんなさい。

onmyo
質問者

補足

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

関連するQ&A