• ベストアンサー

合計していくマクロ

一行目にタイトルがあって A1・・・日付 C1・・・氏名 E1・・・交通機関 F1・・・金額 2行目からはデータが入力されているのですが A2 9/1 C2 田中 E2 バス   F2 100 A3 9/2 C3 田中 E3 タクシー F3 1000 A4 9/3 C4 田中 E4 バス   F4 200  というふうに・・・ これを 氏名ごと、交通機関ごとに金額を合計して 残りを消去するマクロをつくりたいのですが 結果  A2 --- C2 田中 バス 300 A3 --- C3 田中 タクシー 1000 どういう方向でつくったらよいかおねがしします

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

  • ベストアンサー
noname#8027
noname#8027
回答No.4

特にご要望がありましたので、マクロ作成しました。強引に質問通りに作成してあります。(B列・D列が空欄の所も忠実に)エレガントではありませんし、バグが無いとも限りません。行削除がマクロ中ありますので、元ファイルは確実に保存し、十分テストの上、使用してください。 「ツール」-「マクロ」-「Visual Basic Editor」を開いて、下記をそっくり貼り付けます。 実行するときは、「マクロ」-「マクロ」-Macro1を選択して「実効」 Sub Macro1() ' Macro1 Macro ' マクロ記録日 : 2004/9/13 ユーザー名 : PHDR ' ' Dim RowNo As Integer Dim i As Integer RowNo = 3 Do While Cells(RowNo, 1) <> "" For i = 2 To RowNo - 1 If Cells(i, 3) = Cells(RowNo, 3) Then If Cells(i, 5) = Cells(RowNo, 5) Then If Cells(i, 1) < Cells(RowNo, 1) Then Cells(i, 1) = Cells(RowNo, 1) Cells(i, 6) = Cells(i, 6) + Cells(RowNo, 6) Rows(RowNo & ":" & RowNo).Select Selection.Delete Shift:=xlUp RowNo = RowNo - 1 Exit For End If End If Next i RowNo = RowNo + 1 Loop End Sub

ennkai
質問者

お礼

お礼がおそくなってごめんなさい。 きちんと動作して希望通りのマクロです いろいろ勉強させていただきました 複数セルの比較条件は こうやって記述するものなんですね 非常に勉強になりました ありがとうございます!

その他の回答 (3)

  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.3

#1です。 補足を拝見しました。 では、ACCESSはどうですか? クエリで氏名+交通機関でグループ化して金額を集計すれば、お望みの集計結果は一発です。 マウス操作だけでできます。 結果をEXCELのワークシートに書き出すこともできます。

ennkai
質問者

お礼

遅くなってもうしわけありませんでした アクセスは所持していないもので・・・。 今回はマクロを希望していましたが ピボットテーブルも 奥が深くて便利そうですね またこれを機会に勉強させていただきます ありがとうございました

noname#8027
noname#8027
回答No.2

消去せずに、別シートにピポットテーブルを作った方がよいと思いますが… 後から、間違いがわかったとき、追求できなくなりますよ。 C,E,F列を選択して、 「データ」-「ピポットテーブルとピポットグラフレポート」 そのまま「次へ」「次へ」「完了」 「ピポットテーブルのフィールドリスト」というのが出ますので 「氏名」「交通機関」を行タイトルへドラッグします。 「金額」を表の中にドラッグします。 左上が「データの個数/金額」になっていますので、ダブルクリックして、「合計/金額」に変えます。

ennkai
質問者

補足

お二人とも御回答ありがとうございます。 別ソフトからテキスト出力したデータを 読み込んでの作業なので ピボットではなく 元データを消すマクロをかんがえているのです。 マクロで作成したデータをまた別の 表に転記するもので。 説明不測でもうしわけありません

  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.1

ピボットテーブルでほぼご希望の集計ができると思います。 ただし、もしB1とD1が空白でしたら、事前に何でもいいので項目名を入れておいてください。 項目1、項目2とかでいいです。 A1あたりを選択して、ツール→ピボットテーブル Excelのリスト、ピボットテーブル、次へ 範囲=$A:$F、次へ レイアウト 氏名を行へドラッグ 交通機関を行へドラッグ 金額をデータへドラッグ データの個数:金額 をダブルクリック、合計に変更してOK OK、完了 これで新しいシートに以下のように集計結果が出ます。 氏名__交通機関__金額 田中__タクシー__1000 ____バス____ 300 田中_計______1300 氏名の右の▼で空白のチェックをはずしてください。 また、交通機関を計のあたりにドラッグすると、1人1行で、交通機関を右に並べるレイアウトにもなります。 いろいろいじってみてください。便利ですよ。 頑張ってくださいヽ(^。^)ノ

ennkai
質問者

補足

ありがとうございます。 ピボットはとりあえず教えていただいた方法で 使うことができました(今回初めて使えました)。 説明不足でもうしわけありませんでしたが 名前ごと 交通機関ごとの金額合計の一覧表を 作成するマクロをと考えております。 よければ御教授ねがいます

関連するQ&A