Макрос для установки значения Range на основе переменной - PullRequest
0 голосов
/ 16 марта 2020

Привет, я новичок в VBA, и я пытаюсь работать с отчетом QA (аудит вызовов), который будет автоматически вычислять значения на основе данных другого рабочего листа. У меня есть 2 листа: элементы, которые содержат данные, и AutoMacro, который показывает количество ячеек, которое соответствует определенным c критериям.

Лист элементов содержит столбцы с именами Элемент и скорость и Номер недели. Я сделал код, который будет перечислять все отдельные номера недели в столбце «AM» на листе Automacro. Теперь я хочу посчитать, сколько вызовов получили показатель «Развивающийся» (который находится в столбце «Скорость» на странице «Элементы») в «Сострадании» (который находится в столбце «Элемент» на странице «Элементы») за указанную c неделю (столбец AM). в листе AutoMacro)

этот код работает нормально:

CompDevCount = Application.WorksheetFunction.CountIfs( _
    Sheets("Elements").Range("f2:F1048576"), "Compassion", _
    Sheets("Elements").Range("G2:G1048576"),"Developing", _
    Sheets("Elements").Range("C2:C1048576"), "4") 

однако вместо того, чтобы помещать фиксированное значение в последний критерий, который является номером недели, я хочу, чтобы мой код получил значение соответствующей ячейки в столбце AM (если макрос вычисляет значения для row2 на листе AutoMacro, он должен изменить «4» на любое значение AM2), и я не могу понять, как это сделать.

любой помощь очень ценится

вот ссылка на мой пример файла: https://drive.google.com/file/d/1ZXuMsQv_mzvycPXnGCGY7bUL6-gWBrBr/view?usp=sharing

1 Ответ

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

Попробуйте код ниже:

Sub LetsCount()

Dim lastElementsRowIndex As Long
Dim wsElements As Worksheet
Dim wsAutoMacro As Worksheet
Dim elementRange As Range
Dim rateRange As Range
Dim weekRange As Range
Dim i As Long
Dim weekNumber As Integer

Set wsElements = Sheets("Elements")
Set wsAutoMacro = Sheets("AutoMacro")

'//Get the index of the last filled row based on column A (Analyst)
lastElementsRowIndex = wsElements.Cells(Rows.Count, "A").End(xlUp).Row

'//Get ranges
Set elementRange = wsElements.Range("F2:F" & lastElementsRowIndex)
Set rateRange = wsElements.Range("G2:G" & lastElementsRowIndex)
Set weekRange = wsElements.Range("C2:C" & lastElementsRowIndex)

'//Looping through all filled rows in the AutoMacro sheet
For i = 2 To wsAutoMacro.Cells(Rows.Count, "A").End(xlUp).Row

    '//Get week number from cell in column "AM"
    weekNumber = wsAutoMacro.Cells(i, "AM").Value

    '//Get the number of calls with: Rate = 'Developing', Element = 'Compassion' and Week Number = weekNumber
    CompDevCount = Application.WorksheetFunction.CountIfs( _
    elementRange, "Compassion", _
    rateRange, "Developing", _
    weekRange, weekNumber)

    '//Insert the value in the corresponding cell of the AN column (column that I adopted to put the value)
    wsAutoMacro.Cells(i, "AN").Value = CompDevCount
Next

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