ввод слишком большой формулы VBA - PullRequest
0 голосов
/ 09 октября 2018

Привет, я пытаюсь вставить массив формул таким образом

Dim F1 As String
Dim f2 As String

F1 = "=SUM(--(FREQUENCY(IF(rptEURegThresholds!C[7]=""Yes"",IF(rptEURegThresholds!C[16]=""No"",IF(rptEURegThresholds!C[15]=""Total Disclosure"",1,1"
f2 = "MATCH(rptEURegThresholds!C[-1],rptEURegThresholds!C[-1],0)))),ROW(rptEURegThresholds!C[-1])-ROW(rptEURegThresholds!R[-6]C[-1])+1)>0))"

With sh8.Range("F7")
    .FormulaArray = F1
    .Replace "1,1", f2, xlPart
End With

Но что-то не так и не могу найти проблему.Пожалуйста, помогите !!!

1 Ответ

0 голосов
/ 09 октября 2018

Я мог бы подумать о 2 проблемах в формуле

  1. Общее количество символов в вашей формуле (включая F1 и F2) составляет около 272, что превышает ограничение в 255 символов FormArray вExcel Пожалуйста, обратитесь SO сообщение Преодоление 255 символов.предел для FormArray в Excel VBA .

  2. Код должен останавливаться на линии

    .FormulaArray = F1

    с ошибкой «невозможно установить свойство FormualArray класса диапазона». Поскольку на этом этапе формула неполна (несовпадения в скобках и т. д.).

Поэтому я попытался сократить имя листа до «rptEURegThresholds »до« rptEURT »и объединение обеих строк F1 и F2 в качестве F1.Сработало без ошибок.Однако правильная работа формулы может быть проверена только вами.

Dim F1 As String

 F1 = "=SUM(--(FREQUENCY(IF(rptEURT!C[7]=""Yes"",IF(rptEURT!C[16]=""No"",IF(rptEURT!C[15]=""Total Disclosure""," & _
    "MATCH(rptEURT!C[-1],rptEURT!C[-1],0)))),ROW(rptEURT!C[-1])-ROW(rptEURT!R[-6]C[-1])+1)>0))"


    With Sheets(3).Range("F7")
        .FormulaArray = F1
    '    .Replace "1,1", f2, xlPart
    End With
...