2014-10-01 3 views
0

в моем коде Мне нужно умножить массивы: один с флагами (массив «minDiffsArr» с несколькими столбцами на «1» в необходимых местах), а другой - это столбец, где мне нужно проверить мое состояние (только строки с определенным значением в переменной "U")VBA: Оцените sumproduct с массивом и переменной

массив minDiffsArr выглядит следующим образом:

1 
1 
    1 
1 
1 
1 
1 
    1 

... и так далее

в то время как диапазон ("T3: T37 ") выглядит как

8 
4 
6 
4 
9 
1 
5 
8 

и переменная «и» имеет значения от 1 до 10

Стараюсь код:

sheets(2).cells(1, 1) = Evaluate("=SUMPRODUCT(--(" & sheets(1).Range("T3:T" & linesNum + 2).Value & "=" & u & ")," & wsf.Index(minDiffsArr, 0, i) & ")") 

однако, не в состоянии на тип ошибки рассогласования

, когда я добавляю смотреть в мой код , он говорит, что оба массива являются вариантами и одного и того же размера (от 1 до 35), поэтому я не могу понять, что не так с формулой

+0

Вы не можете просто объединить массивы в строку формулы, подобную этой. – Rory

+0

Не могли бы вы сказать, что именно не так, что и почему я не могу конкатенатировать в формуле? И каково возможное решение моих потребностей? – Shurov

+0

Вы просто не можете конкатенировать массив и строку - это не имеет смысла. Решение будет зависеть от того, как объявляются 'u' и' minDiffsArr'. В частности, является 'u' 1-мерным массивом? – Rory

ответ

0

Предполагая, что u является одномерным лизированный массив, вы можете использовать что-то вроде этого (возможно, вам необходимо изменить разделители в заявлениях Join в зависимости от того, как вы обычно вводить константы массива в формуле):

sheets(2).cells(1, 1) = sheets(1).Evaluate("=SUMPRODUCT(--(T3:T" & linesNum + 2 & "={" & Join(u, ",") & "}),{" & Join(Application.Transpose(wsf.Index(minDiffsArr, 0, i)), ";") & "})") 

Если u просто переменное а одно значения, то:

sheets(2).cells(1, 1) = sheets(1).Evaluate("=SUMPRODUCT(--(T3:T" & linesNum + 2 & "=" & u & "),{" & Join(Application.Transpose(wsf.Index(minDiffsArr, 0, i)), ";") & "})") 
Смежные вопросы