従業員のスプレッドシートがあります。列 A は、部門の種類 (営業、人事、給与など) のリストです。列 B は、評価が完了した日付で、未完了の場合は空白です。特定の部門の種類 (例: 「営業」) の部門列をチェックし、「営業」に等しい場合は評価列の対応する行をチェックして日付の数をカウントする関数が必要です。次に、他のすべての部門の種類に複製します。したがって、「営業」の例では、従業員が 4 人いて、そのうち 2 人に評価日がある場合、結果は「2」になります。列 B の他の部門の種類に関連する日付をカウントしないように注意してください。
列A - 部門 . . . . - HR - 営業 - HR - 給与 - 営業 - 営業 - 営業 .
列B - 評価- 2015年7月1日 - 2015年7月8日 - 2015年7月6日 - 「空白」 - 「空白」 - 2015年7月3日 - 「空白」 -
答え1
VBA エディターを開き、[挿入] メニューから [モジュール] を選択します。 結果のテキスト フィールドに次のコードを貼り付けます。
Function DEPTAPPCOUNT(Dept As String, Range As Range, CountRange As Range) As Integer
Dim count As Integer
For Each rCell In Range
If rCell.Text = Dept Then
If rCell.Offset(0, 1).Text <> "" Then count = count + 1
End If
Next
DEPTAPPCOUNT = count
End Function
ツールバーの [保存] ボタンを押し、VBA エディターを閉じてスプレッドシートに戻ります。これで、DEPTAPPCOUNT
Excel の組み込み関数と同じように関数を使用できます。部門列が A2 から A7 にまたがっている場合 (評価日が B2 から B7 にある場合 - この関数が機能するには、カウント対象の列が部門列のすぐ右にある必要があります)、入力する=DEPTAPPCOUNT("Sales", A2:A7, B2:B7)
と、評価日が空白でない販売エントリの数が表示されます。他の部門をカウントするには、最初のパラメーター (テキスト) を必要に応じて調整しますSales
。
XLSM
Excel 2007 以降を使用している場合は、ワークシートを(マクロ対応) 形式で保存する必要があります。
使用されていないのにカスタム関数に渡さなければならない理由を疑問に思う人もいるかもしれCountRange
ませんが、日付列が変更された場合に Excel でカウントを再計算する必要があるためです。つまり、関数に追加の範囲を渡すと、Excel の計算に依存関係が作成されます。