Sumproduct (количество) в VB.net Interop - PullRequest
0 голосов
/ 11 апреля 2019

Я создал программу, которая использует Excel Interop с VB.net для автоматической фильтрации большой таблицы для аналитики.Недавно я понял, что этого можно достичь с гораздо большей точностью и скоростью, используя встроенную в Excel функцию Sumproduct .Однако, хотя у меня был успех с этим в VBA, у меня были проблемы с выяснением, как перевести это в VB.net с Excel Interop.

Работа VBA :

Worksheets("Products").Range("A1").Formula = "=SUMPRODUCT(--('Fruit'!J:J=""" & "Apples" & """))"

Не работает VB.net : (Примечание: я хочу присвоить его переменной, а не применять формулу к ячейке, как указано выше.)

Product1 = WorksheetFunction.SumProduct(--(Worksheet.Range("J:J").EntireColumn.Value() = "Apple"))

Этот код выдает эту ошибку:

System.InvalidCastException: «Не удалось разрешить перегрузку, потому что ни один Public» = не может быть вызван с этими аргументами: «Public Shared Operator = (a As String, b As String)Как логическое значение: параметр сопоставления аргумента «a» не может преобразовать из «Object (,)» в «String». '

Однако я смог заставить это работать:

VBA :

Range("A1").formula = "=SUMPRODUCT(A:A,D:D)"

Переписано на VB.net :

WorksheetFunction.SumProduct(Worksheet.Range("A1").EntireColumn, objNewSheet.Range("D1").EntireColumn)

Я знаю, что мне не хватает чего-то очень "Базового" (каламбур), но я просто не могу понять, как передать Range и String через функцию Sumproduct вместо Range / Range.

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