.Value = Evaluate ("SUMPRODUCT"), возвращающий #VALUE, но .Value = "= SUMPRODUCT" работает правильно? - PullRequest
0 голосов
/ 20 марта 2019

У меня есть скрипт, который генерирует отчеты из набора данных.Набор данных относится к журналу поддержки клиентов с номерами билетов / отслеживания, с базовой информацией о билетах, такой как, когда билет был открыт, кому был назначен билет и какова была основная проблема / рабочая нагрузка.Моя цель состоит в том, чтобы создать отчет, который уже существует, но который заполняется вручную с помощью сводных таблиц (которые почти никто не знает, как использовать) и избегает использования формул.

Основной отчет состоит в том, сколько из каждой рабочей нагрузки было выполнено каждойсотрудник в месяц.Легко выполнимо с помощью сводной таблицы, за исключением того, что большинство людей не знают как.Эта формула Excel получает то, что я хочу за январь, =SUMPRODUCT((data!Column1="Employee1")*(data!Column2="Workload A")*(data!Column3>=DATEVALUE("2019-1"))*(data!Column3<DATEVALUE("2019-2"))).Недостаток данных заключается в том, что даты представляют собой значения дат, которые отформатированы как короткие даты.Решение, которое я имею в VBA:

Cell.Value = "=SUMPRODUCT((data!" & AssigneeCol.Address & "=""" & Assignee.Value & """)*(data!" & WorkloadCol.Address & "=""" & Workload.Value & """)*(data!" & DateCol.Address & ">=DATEVALUE(""" & Worksheet.Name & """))*(data!" & DateCol.Address & "<DATEVALUE(""" & Year & Month2 & """)))"

Это оставляет гигантскую формулу в Excel, которая ссылается на лист data, который не будет включен в отчет (хотя я предполагаю, что он может быть скрыт).Я бы предпочел использовать значения, чтобы сделать управление листом более простым.Я пытался использовать Evaluate, но он делает значение ячейки #VALUE!

CheckCell.Value = Evaluate("=SUMPRODUCT((data!" & AssigneeCol.Address & "=""" & Assignee.Value & """)*(data!" & WorkloadCol.Address & "=""" & Workload.Value & """)*(data!" & DateCol.Address & ">=DATEVALUE(""" & Worksheet.Name & """))*(data!" & DateCol.Address & "<DATEVALUE(""" & Year & Month2 & """)))")

Это из-за врожденного ограничения с Evaluate (), то есть: DATEVALUE в SUMPRODUCT?Насколько я могу сказать, это должно работать, но я понятия не имею.

1 Ответ

2 голосов
/ 20 марта 2019

Не отвечая на ваш вопрос об Evaluate, но вы все равно можете использовать формулу в ячейке, а затем заменить формулу на результат

With Cell
   .Formula = "=SUMPRODUCT((data!...  etc etc"
   DoEvents
   .Value = .Value
End With
...