列の値をチェックしています。真の場合、別の列の同じ行をチェックし、空白でない場合はカウントします。

列の値をチェックしています。真の場合、別の列の同じ行をチェックし、空白でない場合はカウントします。

従業員のスプレッドシートがあります。列 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 エディターを閉じてスプレッドシートに戻ります。これで、DEPTAPPCOUNTExcel の組み込み関数と同じように関数を使用できます。部門列が A2 から A7 にまたがっている場合 (評価日が B2 から B7 にある場合 - この関数が機能するには、カウント対象の列が部門列のすぐ右にある必要があります)、入力する=DEPTAPPCOUNT("Sales", A2:A7, B2:B7)と、評価日が空白でない販売エントリの数が表示されます。他の部門をカウントするには、最初のパラメーター (テキスト) を必要に応じて調整しますSales

XLSMExcel 2007 以降を使用している場合は、ワークシートを(マクロ対応) 形式で保存する必要があります。

使用されていないのにカスタム関数に渡さなければならない理由を疑問に思う人もいるかもしれCountRangeませんが、日付列が変更された場合に Excel でカウントを再計算する必要があるためです。つまり、関数に追加の範囲を渡すと、Excel の計算に依存関係が作成されます。

関連情報