Вместо того, чтобы пытаться исправить вашу формулу, я бы лучше показал вам более чистый подход.
INDIRECT - это мощная, но неустойчивая функция, которая всегда будет пересчитываться с каждым изменением в книге. Если вы используете его во всей колонке, это может значительно замедлить работу вашей книги. Вы также застреваете в произвольно большой области, которая имеет собственные риски и проблемы с производительностью.
Вы можете найти номер строки второго экземпляра значения, используя функцию, введенную массивом. Двойной щелчок в ячейке, так что вы находитесь в режиме редактирования, вставить в эту формулу, а затем подтвердить его с помощью CRTL-SHIFT-ENTER:
=SMALL(IF('[InsightsDataExport.xlsx]Lead Profile'!$AP1:$AP10000=A1,ROW($A$1:$A$10000),FALSE),2)
Внутренние части этой формулы необходимо выполнить следующие действия:
'[InsightsDataExport.xlsx]Lead Profile'!$AP1:$AP10000=A1
создает массив истинных и ложных значений в зависимости от того, каждая ячейка в AP1: AP10000 соответствует значению в локальном A1
ROW($A$1:$A$10000)
создает массив чисел от 1 до 10000, которые используются, если в ячейке соответствует A1, в противном случае используется FALSE. Итак, если значение, которое вы ищете, найдено в ячейках 2 и 5, внутренняя часть формулы имеет такой массив, как:
{FALSE, 2, FALSE, FALSE, 5, FALSE ....}
Затем МАЛЫЙ (массив, 2) означает взять 2 наименьшее числовое значение, которое будет строка номер 2-го матча, который в данном случае в 5.
чтобы увидеть его в медленном движении, проверьте его на небольшом диапазоне, затем используйте инструмент «Функция оценки» на вкладке «Формулы».
Теперь, когда у вас есть номер строки, вы можете использовать индекс столбца, вы на самом деле ищете:
=INDEX('[InsightsDataExport.xlsx]Lead Profile'!$AR1:$AR10000,rownumber)
Однако, это все еще работает над сколь угодно большим диапазоном, чтобы убедиться, что он включает в себя все значения. Это плохая практика по нескольким причинам. В основном, он никогда не гарантирует, что вы включите все данные; в частности, если строки удаляются, диапазон будет продолжать сокращаться.
Это гораздо более аккуратный и удобный для чтения, если вы работаете с таблицами.
Если вы вставляете таблицу в свои данные, вместо этого вы можете ссылаться на имена столбцов. Затем функции будут искать только количество строк, которые есть в таблице.
В ваших данных используйте Insert> Table. Затем, когда вы создаете формулы, если вы выберете все строки данных для столбца в таблице, excel автоматически введет имя столбца. Таким образом, если столбец AP имеет заголовок под названием «ID», формула для идентификации строки с 2-согласующего ID становится:
=SMALL(IF(InsightsDataExport.xlsx!Table1[Id]=A1,ROW(InsightsDataExport.xlsx!Table1[Id]),FALSE),2)
Вы можете также использовать индекс столбца, который имеет данные, которые вы хотите, чтобы вернуться , Обратите внимание, что если вы выбираете только строки данных, исключая заголовок столбца, то строка 2 фактически является первой строкой поиска индекса, поэтому вам нужно вычесть 1 из номера строки. Если данные в колонке с заголовком «Сумма», вы будете использовать формулу, как:
=INDEX(InsightsDataExport.xlsx!Table1[Amount],rownumber - 1)
Вы должны построить всю ссылку внутри Косвенное, в том числе книги и листа –