Индекс соответствия с несколькими критериями преобразования в VBA с использованием формулы массива - PullRequest
0 голосов
/ 12 июня 2018

У меня есть таблица, из которой я пытаюсь получить данные по нескольким критериям.Я использую Index Match для этого.Если я вручную вставлю формулу в Excel, она будет работать в обоих случаях:

Сначала я ввел формулу массива, используя полный диапазон столбцов из необработанной таблицы в формуле соответствия индекса

    Selection.FormulaArray = _
    "=IF(ISNA((INDEX(Data!C2:C8,MATCH(1,(Data!C2=RC2)*(Data!C3=RC3)*(Data!C4=R3C)*(Data!C5=R4C),0),4))),""F"",(INDEX(Data!C2:C8,MATCH(1,(Data!C2=RC2)*(Data!C3=RC3)*(Data!C4=R3C)*(Data!C5=R4C),0),4)=R4C))"
* 1005.* Это работает, но очень медленно работает с большими данными.Поэтому я изменил формулу для определенного диапазона из таблицы, например, 30000 строк.Это работает, когда я ввожу его вручную в Excel со ссылками на строки и столбцы, это также значительно сокращает время обработки.Но выдает ошибку, когда я пытаюсь использовать его через код в VBA, используя стиль R1C1.Ниже приведен пример кода с диапазоном для 40000 строк
    Selection.FormulaArray = _
    "=IF(ISNA((INDEX(Data!R2C2:R40000C8,MATCH(1,(Data!R2C2:R40000C2=R[-1]C2)*(Data!R2C3:R40000C3=R[-1]C3)*(Data!R2C4:R40000C4=R3C)*(Data!R2C5:R40000C5=R4C),0),4))),""F"",(INDEX(Data!R2C2:R40000C8,MATCH(1,(Data!R2C2:R40000C2=R[-1]C2)*(Data!R2C3:R40000C3=R[-1]C3)*(Data!R2C4:R40000C4=R3C)*(Data!R2C5:R40000C5=R4C),0),4)=R4C))"

. Показана ошибка:

"Ошибка времени выполнения 1004. Невозможно установить свойство массива формул для диапазонакласс. "

Мне кажется, что ошибка связана со стилем синтаксиса того, как он должен быть введен.Заранее спасибо за поддержку

1 Ответ

0 голосов
/ 12 июня 2018

Самый простой способ:

  1. Запишите формулу в Excel;
  2. Перейдите на вкладку «Разработчик» и нажмите «Записать макрос»;
  3. Прежде чем выполнить пункт 2, нажмите на этот маленький квадрат:

enter image description here

Затем нажмите несколько раз на ячейку с формулой, она будет «переведена»;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...