несоответствие sumproduct vba

#vba #mismatch #evaluate #sumproduct

#vba #несоответствие #оценить #sumproduct

Вопрос:

Я не уверен, в чем ошибка в этом коде, пожалуйста, сообщите, что я пытаюсь получить значение суммы с другого листа

 For e = 8 To 120

    '''----Item no--------'''
                     
    '''----Branch--------'''



    '''----Trouser--------'''

    Range("C" amp; e).Value = Round(Evaluate("SUMPRODUCT(  --('1.Insert_Data'!F:F = '2.Counting_sheet'!A" amp; e amp; "),'1.Insert_Data'!E:E)"))
    Range("T" amp; e).Value = Round(Evaluate("SUMPRODUCT(  --('1.Insert_Data'!F:F = '2.Counting_sheet'!A" amp; e amp; "),('1.Insert_Data'!C:C = ""Branch""),'1.Insert_Data'!I:I)"))
    Range("U" amp; e).Value = Round(Evaluate("SUMPRODUCT(  --('1.Insert_Data'!F:F = '2.Counting_sheet'!A" amp; e amp; "),'1.Insert_Data'!J:J)"))
    Range("V" amp; e).Value = Round(Evaluate("SUMPRODUCT(  --('1.Insert_Data'!F:F = '2.Counting_sheet'!A" amp; e amp; "),'1.Insert_Data'!K:K)"))

Next e

End Sub
  

Комментарии:

1. Не уверен, как отладить эту проблему. Однако, поскольку я сам много занимался VBA, я не советую вам использовать функцию eval для таких сложных формул. Вам было бы лучше перебирать диапазон и умножать и суммировать с помощью VBA.

2. Есть ли WorksheetFuction.SumProduct() или только .Sum() ? Если есть, я предлагаю вам использовать это, в противном случае выполняйте вычисления в VBA по компонентам из массивов памяти. Например: arrayC = Range("C8").Resize(116,1).Value

3. Диапазон («T» и e). Значение = Приложение. WorksheetFunction.sumproduct((Листы(«1.Insert_Data»). Диапазон («F: F») = диапазон («A8»)), (Листы («1.Insert_Data»). Диапазон («C: C») = «Ветвь»), (Листы («1.Insert_Data»). Диапазон («I: I»))) — все еще несоответствие

4. В вашей исходной формуле условие для столбца C возвращает массив значений TRUE и / или FALSE, которые необходимо преобразовать в их числовой эквивалент, 1 и 0, соответственно, используя двойное отрицание. Попробуйте ` Range(«T» amp; e). Значение = Round(Оценить(«SUMPRODUCT( —(‘1.Insert_Data’!F:F = ‘2.Counting_sheet’! A» amp; e amp; «),—(‘1.Insert_Data’!C: C = «»Ветка»»),’1.Insert_Data’!I: I)»)) `.