Помощь! Совсем недавно в Excel VBA, и сейчас я прохожу несколько платных курсов, чтобы поправиться, но я столкнулся с препятствием, и поиск в Google не дает мне результатов, которые я ищу.
Iиметь постоянно растущую электронную таблицу отслеживания, которая показывает данные о том, что мы обработали (мы называем это «построением»), в столбце, а затем данные, показывающие, что мы проверили (мы называем это проверенным) те данные, которые мы обработалив другой колонке. Я хочу узнать, был ли обработан год, и выяснить, прошел ли он аудит независимо от года проведения аудита, и, если да, добавьте его. Я хочу делать это для каждого года, поэтому 2017, 2018, 2019, 2020 и т. Д. И т. Д.
Затем, наконец, поместите результаты для каждого года в ячейку панели управления.
Например, столбец поиска Jкоторый содержит дату, когда мы обработали данные за 2017 год, затем посмотрите на проверенный столбец в той же строке (который также содержит дату), если там есть что-то, и посчитайте 1. Затем делайте это снова и снова, пока весь диапазон не будетбыл проверен. Каждый раз, когда мы находим дату с 2017 года, мы добавляем ее и делаем это для каждого года. В конце поиска результаты для каждого года должны быть введены в лист панели инструментов.
Есть ли способ написать код для проверки каждый год вместо того, чтобы вызывать каждый год специально?
Вот что я получил, но продолжаю сталкиваться с ошибкой. Либо «следующий без для» и другие, которые я не могу вспомнить сейчас. Я гуглил и добавлял все виды вещей, перемещал их и т. Д. И т. Д. Я уверен, что я делаю что-то действительно явно неправильное, но я просто не вижу этого. Пожалуйста, помогите новичку здесь.
Sub CountAudits()
Dim CellBuild As Range
Dim CellAudit As Range
Dim CellDateCount2017 As Long
For Each CellBuild In Sheet1.Range("J:J500") 'column J contains a date MMYYDD what we call "build" data in other words we processed it.
If CellBuild.Value = "2017" Then 'this checks if the date it was processed was in 2017
For Each CellAudit In Sheet1.Range("Q:Q500") 'this is the column containing the date it was audited. It will be blank if it was not audited.
If CellAudit.Value <> "" Then 'this checks if it's been audited. I don't care about the date just as long a there is something in the cell
CellDateCount2017 = CellDateCount2017 + 1 'if the processed date was 2017 and it was audited it adds a count of 1 to here.
Exit For
Sheet2.Range("V18").Value = CellDateCount2017 'Sheet2 is the sheet code name to the dashboard
Next ' I keep getting an "Next without for" error for this here. I've added all sorts of ends, end ifs, etc. but I can't figure it out.
End If
End Sub
Я нашел SUMPRODUCT, который, я думаю, я могу использовать, чтобы подсчитать, сколько раз 2017 отображается в моей колонке, но как мне его получитьдобавить его и перенести на панель? например, SUMPRODUCT(1*(YEAR(J1:J500)=2017))
Если бы это было не так весело, разобраться в этом, я мог бы просто уйти от этого! Я был укушен ошибкой "этот материал VBA - это весело".