プロが教えるわが家の防犯対策術!

同じID且つ同じ場所の作業期間内で重複しているものを算出したいです。

添付画像を例として、F3セルに
=SUMPRODUCT((D3>=$C$3:$C$17)*(C3<=$D$3:$D$17)*1,($B$3:$B$17=B3)*1,($E$3:$E$17=E3)*1)
を入力しており、それをオートフィルしています。
これだと、きちんと算出され、F8・F9セルに2と表示されています。

しかし、ID数は作業期間により変化するため、今回はVBAで作成したいです。
どのようなマクロを組めばよろしいでしょうか。
マクロ初心者のためなるべく簡単だと助かります。

「vbaで重複期間の算出」の質問画像

A 回答 (2件)

> ID数は作業期間により変化するため



17行目までではなく、18行目まで、19行目まで、、、、32行目までなどのようになる、という意味でしょうか。

=IF(E3<>"",SUMPRODUCT((D3>=$C$3:$C$300)*(C3<=$D$3:$D$300)*1,($B$3:$B$300=B3)*1,($E$3:$E$300=E3)*1),"")
のように、使いそうな最大行が120行程度なら、それより適当に大きな300にしておいて、F3からF200まで、あらかじめ、オートフィルしておいてはどうですか。
    • good
    • 0

こんにちは



現状でできているものをわざわざマクロにする理由がわかりませんが、同じことを行えば良いだけではないでしょうか?
関数であれば、値が変わっても即時反映されますが、マクロだと、都度実行しないと結果に反映されません。

With Range("F3:F17")
.FormulaLocal = "=SUMPRODUCT((D3>=$C$3:$C$17)*(C3<=$D$3:$D$17)*($B$3:$B$17=B3)*($E$3:$E$17=E3)*(B3<>""""))"
.Value = .Value
End With
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!