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

質問です
コード別に性別ごとに金額を小計する関数またはマクロをお願いします
B列にコード(半角英数小文字)C列男女、金額のエクセルデータがあります
データは2行目から
B列 C列 I列
コード 性別 金額
aaaa 男 -1000
aaaa 男 -2000
bbbb 女 -1000
abcd 女 -1000
答え
2行目からデータ
同じコードの最後の行のD列(男)F列(女)に答えの小計をだす
B列 C列 D列 F列 I列
男の答え 女の答え
aaaa 男 -1000
aaaa 男 -3000 -2000
bbbb 女 -1000 -1000
abcd 女 -1000 -1000

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

▽最新の回答へ

1 ● きゃづみぃ
●90ポイント ベストアンサー
Sub main()
  'コード、性別でソートされているのを条件として実行します。
 
  '1行もないとき
 If Cells(2, "B") = "" Then
 Exit Sub
 End If
 
  '初期値のセット
 c1 = Cells(2, "B")
 c2 = Cells(2, "C")
 d = Cells(2, "I")
 
  '1行しかないとき
 If Cells(3, "B") = "" Then
 If c2 = "男" Then
 Cells(2, "D") = d
 Else
 Cells(2, "F") = d
 End If
 Exit Sub
 End If
 
 d = 0
 For a = 2 To Cells(2, "B").End(xlDown).Row
 If Cells(a, "B") <> c1 Or Cells(a, "C") <> c2 Then
 If c2 = "男" Then
 Cells(a - 1, "D") = d
 Else
 Cells(a - 1, "F") = d
 End If
 d = 0
 End If
 c1 = Cells(a, "B")
 c2 = Cells(a, "C")
 d = Cells(a, "I") + d
 Next a

 If c2 = "男" Then
 Cells(a - 1, "D") = d
 Else
 Cells(a - 1, "F") = d
 End If

End Sub

変更しました。

◎質問者からの返答

そうですねやはり答えの行は番組の最後の行で男女おなじ位置が良いですね

男女の区別は列で分けていますので

変更ができましたら

答えの行のA列にB列の答えの行のIDと同じものをコピーできたらよいのですが


2 ● うぃんど
●10ポイント

関数だけで行う例

・質問文では5行分だけだったので最下行は5としていますが、実際には100行あるということであれば5の部分を全て100にするか、あるいはもっと大きな数値にしておく

・3行目以下は2行目をコピーすればいい

D2 =IF($B2=$B3,"",SUMPRODUCT(($C$2:$C$5="男")*($B$2:$B$5=$B2),$I$2:$I$5))
F2 =IF($B2=$B3,"",SUMPRODUCT(($C$2:$C$5="女")*($B$2:$B$5=$B2),$I$2:$I$5))
◎質問者からの返答

windofjulyさん

やってみたのですが上手く行かなかったです。

関連質問


●質問をもっと探す●



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