2017-02-08 6 views
2

Сначала я пытаюсь написать программу макросов, которая позволяет пользователю использовать для поиска числа, наиболее близкие к общей цели, которые вводят от пользователя.VBA FormulaArray - Невозможно установить свойство FormulaArray класса Range

  • в первом рисунке колонка количества представляет суммы для собственного названия соответственно. Цель - вход пользователя. горизонтальный A, B, C, D используется для отображения пользователя, для которого используется название.

enter image description here

Я получаю сообщение об ошибке после выполнения файла.

enter image description here

Любые советы? Спасибо ...

Sub Option1() 
    Dim c As Long 
    For c = 5 To 8 
     Sheet1.Cells(5, c).FormulaArray = _ 
      "=INDEX(MOD(INT((ROW(R2C2:INDEX(C2,2^ROWS(R2C2:R9C2)))-1)/2^(TRANSPOSE(MATCH(ROW(R2C2:R9C2),ROW(R2C2:R9C2)))-1)),2)*TRANSPOSE(R2C2:R9C2),MATCH(MIN(ABS(MMULT(MOD(INT((ROW(R2C2:INDEX(C2,2^ROWS(R2C2:R9C2)))-1)/2^(TRANSPOSE(MATCH(ROW(R2C2:R9C2),ROW(R2C2:R9C2)))-1)),2),R2C2:R9C2)-R1C5)),ABS(MMULT(MOD(INT((ROW(R2C2:INDEX(C2,2^ROWS(R2C2:R9C2)))-1)/2^(TRANSPOSE(MATCH(ROW(R2C2:R9C2),ROW(R2C2:R9C2)))-1)),2),R2C2:R9C2)-R1C5),0),0)" 
    Next c 
End Sub 
+0

Возможно, вам следует, прежде чем удалить существующий массив? Вы не можете изменить часть существующего массива. –

ответ

0

Вы должны применяться ко всему диапазону непосредственно, а не в каждой клетке:

Sub Option1() 
    Sheet1.Range(Sheet1.Cells(5,5),Sheet1.Cells(5, 8)).Clear 
    Sheet1.Range(Sheet1.Cells(5,5),Sheet1.Cells(5, 8)).FormulaArray = _ 
     "=INDEX(MOD(INT((ROW(R2C2:INDEX(C2,2^ROWS(R2C2:R9C2)))-1)/2^(TRANSPOSE(MATCH(ROW(R2C2:R9C2),ROW(R2C2:R9C2)))-1)),2)*TRANSPOSE(R2C2:R9C2),MATCH(MIN(ABS(MMULT(MOD(INT((ROW(R2C2:INDEX(C2,2^ROWS(R2C2:R9C2)))-1)/2^(TRANSPOSE(MATCH(ROW(R2C2:R9C2),ROW(R2C2:R9C2)))-1)),2),R2C2:R9C2)-R1C5)),ABS(MMULT(MOD(INT((ROW(R2C2:INDEX(C2,2^ROWS(R2C2:R9C2)))-1)/2^(TRANSPOSE(MATCH(ROW(R2C2:R9C2),ROW(R2C2:R9C2)))-1)),2),R2C2:R9C2)-R1C5),0),0)" 

End Sub 

Или

Sub Option2() 
    Sheet1.Range("E5:I5").Clear 
    Sheet1.Range("E5:I5").FormulaArray = _ 
     "=INDEX(MOD(INT((ROW(R2C2:INDEX(R2C3,2^ROWS(R2C2:R9C2)))-1)/2^(TRANSPOSE(MATCH(ROW(R2C2:R9C2),ROW(R2C2:R9C2)))-1)),2)*TRANSPOSE(R2C2:R9C2),MATCH(MIN(ABS(MMULT(MOD(INT((ROW(R2C2:INDEX(R2C3,2^ROWS(R2C2:R9C2)))-1)/2^(TRANSPOSE(MATCH(ROW(R2C2:R9C2),ROW(R2C2:R9C2)))-1)),2),R2C2:R9C2)-R1C5)),ABS(MMULT(MOD(INT((ROW(R2C2:INDEX(R2C3,2^ROWS(R2C2:R9C2)))-1)/2^(TRANSPOSE(MATCH(ROW(R2C2:R9C2),ROW(R2C2:R9C2)))-1)),2),R2C2:R9C2)-R1C5),0),0)" 

End Sub 
+0

Привет R3uK, не работает ... – Empty

+0

@Empty: Какая ошибка? Я добавил строку, чтобы сначала очистить диапазон – R3uK

+0

Ошибка времени выполнения '1004': Невозможно установить свойство FormulaArray класса Range – Empty

Смежные вопросы