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

質問です。
男女混合のエクセルデータを男女別に小計する関数またはマクロを
お願いします。
1行目は項目です。
データは日々加算されます。その都度集計します。
データの最後の行と男女合計の行は空の行間があります。

A列は日付
B列はコード
C列は男または女の文字列
D列E列F列G列H列I列は数字が入ります
その数字の合計を
B列に男女別を表示してその行に
D列E列F列G列H列I列の合計をします。

A B C D E F G H I
5月1日 AAA 男 5000 1800 2 1 1 10000
5月2日 BBB 女 3000 2000 3 2 2 5000

男計 5000 1800 2 1 1 10000

女計 3000 2000 3 2 2 5000


●質問者: inosisi
●カテゴリ:コンピュータ インターネット
✍キーワード:5月1日 5月2日 AAA エクセル コード
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● あすか
●35ポイント

SUMIF関数を使えばできます。


たとえばD1?D10にデータが入っているなら、合計式は以下のようになります。

男計 =SUMIF(C1:C10,"=男",D1:D10)

女計 =SUMIF(C1:C10,"=女",D1:D10)


たとえばE1?E10にデータが入っているなら、合計式は以下のようになります。

男計 =SUMIF(C1:C10,"=男",E1:E10)

女計 =SUMIF(C1:C10,"=女",E1:E10)

◎質問者からの返答

ありがろうございました。

上手く行きました。

早速使わせていただきます。


2 ● SALINGER
●35ポイント ベストアンサー

予め男性、女性の集計列に、sumif関数を入れておけばいいです。

http://kokoro.kir.jp/excel/sumif.html


ただしこの場合最下行に1行挿入すると関数が変わらないので合計が違うということになります。

(予め1行多い空白行までを範囲としておくという方法もありますが)


それで、マクロならばこんな感じです。

stRow=1が1行目からという意味ですので、2行目からのときはstRow=2にしてください。

Sub Macro()
 Dim i As Long
 Dim stRow As Long
 Dim lastRow As Long
 
 stRow = 1
 lastRow = Range("A1").End(xlDown).Row
 
 Range(lastRow + 1 & ":" & lastRow + 4).Clear
 
 Cells(lastRow + 2, "B").Value = "男性"
 For i = 4 To 9
 Cells(lastRow + 2, i).Value = Application.WorksheetFunction.SumIf(Range(Cells(stRow, "C"), _
 Cells(lastRow, "C")), "男", Range(Cells(stRow, i), Cells(lastRow, i)))
 Next i
 Cells(lastRow + 4, "B").Value = "女性"
 For i = 4 To 9
 Cells(lastRow + 4, i).Value = Application.WorksheetFunction.SumIf(Range(Cells(stRow, "C"), _
 Cells(lastRow, "C")), "女", Range(Cells(stRow, i), Cells(lastRow, i)))
 Next i
End Sub

※ Excelの質問だけに即座に回答してるつもりはありませんが、他の話題のときには優秀な方がたくさんいますので出しゃばらないようにしています。

◎質問者からの返答

ありがろうございました。

マクロは上手く行きました。

早速使わせていただきます。

大変助かりました。

関連質問


●質問をもっと探す●



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