Как рассчитать расчетные часы сотрудника в Excel VBA - PullRequest
0 голосов
/ 23 марта 2020

У меня есть два листа в рабочей книге, лист 1 и лист 2. На листе 1 у меня есть список идентификаторов сотрудников:

enter image description here

На листе 2 у меня есть реквизиты для выставления счетов сотрудникам, где сотрудник может выставлять счета в различных категориях, из которых он может заполнить в общей сложности более 40 часов.

enter image description here

Я хочу выполнить поиск EMPID из листа 1 EX: 123 в листе 2. Мы можем игнорировать столбец Nonbillable в столбце фактурирования сотрудника и суммировать остальные значения корзины фактуры.

Здесь указано общее количество часов EMPID 123 = Вернуться к обслуживанию (24) + Администрация (8) = 32 Я напечатал это на листе 1. Столбец «Общее количество оплачиваемых часов».

Вот мой код:

Sub Billingreport()
Billing = 0
Dim rng As Range
Dim account As String
Dim rownumber As Long
Dim i As Integer
For i = 2 To 20
For j = i To 20
If Sheet1.Cells(1, 1) = Sheet2.Cells(j, 1) Then
'& sheet2(j,2)! = "Nonbillable"
Billing = Billing + Sheet2(j, 3).Value
Sheet1.Cells(i, 2).Value = Billing.Value
End If
Next j
Next i
End Sub

1 Ответ

0 голосов
/ 23 марта 2020

Предполагая, что ваши таблицы начинаются с заголовков на соответствующих листах, вы можете просто ввести следующую функцию SUMIFS в "B2" и скопировать ее

=SUMIFS(Sheet2!C:C,Sheet2!A:A,Sheet1!A2,Sheet2!B:B,"<>Nonbillable")

Но так как вы спрашиваете VBA. .

Sub Macro2()

    Sheets("Sheet1").Range("B2:B4").FormulaR1C1 = _
        "=SUMIFS(Sheet2!C3:C3,Sheet2!C1:C1,RC[-1],Sheet2!C2:C2,""<>Nonbillable"")"
    Worksheets("Sheet1").Calculate
    'you can add the following line to convert the formula to value
    Sheets("Sheet1").Range("B2:B4").Value = Sheets("Sheet1").Range("B2:B4").Value

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...