人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

質問です
エクセルで1ファイルに名前がついたsheetが7つあります
各シートに下記のようなデータがあります。
シート毎に計算できるマクロか関数をお願いします
A列 F列 G列 H列 I列
日付 人数 日計 人数 金額
2011/5/1 1 1000
2011/5/1 1 1000
2011/5/2 1 2000
2011/5/2 1 2000
2011/5/2 1 3000
A列に日付、I列に金額の以上のデータがあります
このデータの日付のそれぞれの最後の行に
その日の人数をF列、合計金額をG列に計算して
表示できる関数またはマクロをおねがいします。
答え
A列 F列 G列 H列 I列
日付 人数 日計 人数 金額
2011/5/1 1 1000
2011/5/1 2 2000 1 1000
2011/5/2 1 2000
2011/5/2 1 2000
2011/5/2 3 7000 1 3000


●質問者: inosisi
●カテゴリ:コンピュータ インターネット
✍キーワード:エクセル データ ファイル マクロ 名前
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● SALINGER
●50ポイント

これくらいなら数式でやったほうが簡単かもしれません。

日付順に並んでいるなら

F2の数式

=IF(A2=A3,"",COUNTIF(A:A,A2))


G2の数式

=IF(A2=A3,"",SUMIF(A:A,A2,I:I))


としてそれぞれ下にコピー。全てのシートに同様に入れる。

◎質問者からの返答

ありがとうございます

やってみたのですが

H列I列のデータを同じくもってくるだけなのですが

どこの設定がわるいのでしょうか?


2 ● きゃづみぃ
●50ポイント ベストアンサー

FとG列は クリアしていませんので、合計のところだけセットしています。

ほかに入っていたら そのままということです。

あと 対象となるシートだけ mainのほうに コピーして 書いてください。

Sub main()

  '対象となるシート名を入れて呼び出します。
 Call jikkou("Sheet3")
 Call jikkou("Sheet4")
 Call jikkou("Sheet5")

End Sub


Sub jikkou(s As String)
 
 c0 = "A"  '日付の列
 c1 = "F"  '計の人数をセットする列
 c2 = "G"  '計の金額をセットする列
 c3 = "H"  '集計対象の人数をセットする列
 c4 = "I"  '集計対象の金額をセットする列

 b = Sheets(s).Cells(2, c0).End(xlDown).Row
 If Sheets(s).Cells(2, c0) = "" Then Exit Sub
 If Sheets(s).Cells(3, c0) = "" Then b = 3

 k1 = 0
 k2 = 0
 m = Sheets(s).Cells(2, c0)
 For a = 2 To b
 If Not (m = Sheets(s).Cells(a, c0)) Then
 Sheets(s).Cells(a - 1, c1) = k1
 Sheets(s).Cells(a - 1, c2) = k2
 k1 = 0
 k2 = 0
 End If
 k1 = k1 + Sheets(s).Cells(a, c3)
 k2 = k2 + Sheets(s).Cells(a, c4)
 m = Sheets(s).Cells(a, c0)
 Next a
 
 Sheets(s).Cells(a - 1, c1) = k1
 Sheets(s).Cells(a - 1, c2) = k2
 
End Sub

◎質問者からの返答

ありがとうございます

やってみたのですが

H列I列のデータを同じくもってくるだけなのですが

どこの設定がわるいのでしょうか?

Sheet名はコピーしていれました。

A列の日付ごとに人数と金額を小計することができません。

よろしくお願いします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ