Добавить переменную в индекс соответствия функции в Excel - PullRequest
0 голосов
/ 04 февраля 2020

Необходимо добавить переменную в качестве диапазона, но невозможно объединить, чтобы выдать ошибку

Dim lr As Long
   lr = Range("A1").CurrentRegion.Rows.Count

Dim arrayRangeAll As String  
Dim arrayRangeID As String  

  arrayRangeAll = Range("A2:L" & lr).Address  
  arrayRangeID = Range("A2:A" & lr).Address 

Range("N1").Select  
ActiveCell.FormulaR1C1 = "Client_Coorelation"  
Range("N2").Select  
ActiveCell.FormulaR1C1 = _
    "=INDEX(SMSv2!" & arrayRangeAll & ",MATCH(SMSv1!RC[-11],SMSv2!" & arrayRangeID & ",0),4)"

Ответы [ 2 ]

0 голосов
/ 04 февраля 2020

Добавление секунды, поскольку это может быть связано не с переменной, а с формулой, которую вы назначаете свойству FormulaR1C1.

Используя приведенный здесь пример: https://www.excel-easy.com/vba/examples/formulaR1C1.html

Ячейка B3 содержит число 2, а следующий VBA используется для добавления формулы в ячейку D4.

Sub foo_1()

    Range("D4").FormulaR1C1 = "=R[-1]C[-2]*10"

End Sub

Однако использование стиля формулы из вашего примера с теми же значениями not.

Sub foo_2()

    Range("D4").FormulaR1C1 = "=RC[-1-2]*10"

End Sub

и выдает ошибку времени выполнения 1004.

Run time error 1004

Использование функции смещения позволяет добиться практически того же, а может и большего знакомы другим:

Sub foo_3()

    Range("D4").Formula = "=offset(D4,-1,-2)*10"

End Sub
0 голосов
/ 04 февраля 2020

Как то так, но я не уверен, что у вас есть рабочий лист SMSv1. Строка представляет следующую формулу из моего образца листа из 20 строк.

=INDEX(SMSv2!$A$2:$L$20,MATCH(SMSv1!RC[-11],SMSv2!$A$2:$A$20,0),4)

    Dim lr As Long
    lr = Range("A1").CurrentRegion.Rows.Count

    Dim arrayRangeAll As String
    Dim arrayRangeID As String

    arrayRangeAll = Range("A2:L" & lr).Address
    arrayRangeID = Range("A2:A" & lr).Address

    Range("N1").Select
    ActiveCell.FormulaR1C1 = "Client_Coorelation"
    Range("N2").Select
    ActiveCell.FormulaR1C1 = "=INDEX(SMSv2!" & arrayRangeAll & ",MATCH(SMSv1!RC[-11],SMSv2!" & arrayRangeID & ",0),4)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...