- ベストアンサー
Excelマクロを使用して部署ごとの人数を求める方法
- Excelのマクロを使用して、部署ごとの基幹職人数を求める方法は、以下のようになります。
- まず、マクロを実行するシートを選択し、セルの範囲を指定します。
- 次に、ループを使用して各行のデータをチェックし、基幹職Noのセルが空でないかを確認します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは Sub test1() Dim r As Range Const c1 As String = "C:C" Const c2 As String = "D:D" Const k As Long = 2 Const i As Long = 3 Const g As Long = 4 For Each r In Range(c2).Cells(2, 1).Resize(Range(c1) _ .SpecialCells(xlCellTypeConstants).Cells.Count - 1) If r.Value <> "" Then r.Offset(, k).Formula = _ "=COUNTIFS(" & c1 & "," & Intersect(r.EntireRow, Range(c1)).Address & _ "," & c2 & "," & r.Address & ")" ElseIf r.Offset(, -1).Value <> r.Offset(1, -1) Then r.Offset(, i).Formula = _ "=COUNTIFS(" & c1 & "," & Intersect(r.EntireRow, Range(c1)).Address & _ "," & c2 & ","""")" r.Offset(, g).Formula = _ "=COUNTIF(" & c1 & "," & Intersect(r.EntireRow, Range(c1)).Address & ")" End If Next End Sub で。
その他の回答 (1)
- ushi2015
- ベストアンサー率51% (241/468)
こんにちは Sub test() Dim r As Range Sheets("WORK").Select For Each r In Range("D2", Range("A" & Rows.Count).End(xlUp).Offset(, 3)) If r.Value <> "" Then r.Offset(, 2).Formula = _ "=COUNTIFS(A:A," & r.Offset(, -3).Address & _ ",D:D," & r.Address & ")" ElseIf r.Offset(, -3).Value <> r.Offset(1, -3) Then r.Offset(, 3).Formula = _ "=COUNTIFS(A:A," & r.Offset(, -3).Address & _ ",D:D,"""")" r.Offset(, 4).Formula = _ "=COUNTIF(A:A," & r.Offset(, -3).Address & ")" End If Next End Sub こういう事ですか?
補足
ushi2015さん、今晩は。 早速のご回答頂き有難うございます。結果としては記述頂いたコーディングでバッチリでした。 因みにこのコーディングではA列(部署名)をキーにCOUNTIFS関数で件数を出すようにしていますが、これをC列(部署番号)をキーにCOUNTIFS関数で処理をさせたい場合はどうしたら良いでしょうか。 実は本番のデータを使用した時にA列(部署名)が同じ部署名にも関わらずセルによっては全角記述だったり全角半角混在する記述(例:システム開発部の「システム」が全角記述又は半角記述)がみられ、結果として部署番号が同一でも別べつの部署扱いとなって件数が出力される現象が出ているのです。 お手数かけて済みませんが、何卒再度ご教授の程宜しくお願い致します。