Я не очень большой поклонник создания формул, более сложных, чем они должны быть. Целью ROW function является создание серии последовательных чисел. Он используется, чтобы отметить позицию в пределах диапазон, а не фактическую строку на листе. Неважно, где ссылается строка; он не должен ссылаться на рабочую книгу/рабочий лист, где вы собираете данные.
Это,
ROW([Testbook2.xlsx]Sheet1!$A$2:$A$6) - ROW([Testbook2.xlsx]Sheet1!$A$2) + 1
ROW([Testbook2.xlsx]Sheet1!1:1)
... может быть сокращен до,
ROW($1:$5)
ROW(1:1)
Есть 5 клеток в [Testbook2.xlsx] Лист1 $ A $ 2: $ A $ 6, так что все вас require - это число от 1 до 5. ROW(1:1)
- это 1, который станет 2, затем 3 и т. д., когда он будет заполнен. Он предоставляет параметр kSMALL function. Неважно, откуда оно взялось.
Как только я получил все, что было на самом деле необходимо, стало очевидно, что ваши формулы работают в текущем состоянии. Тем не менее, это формула массива, а не формула SQL.
=IFERROR(INDEX([Testbook2.xlsx]Sheet1!$A$2:$A$6, SMALL(IF([Testbook2.xlsx]Sheet1!$B$2:$B$6="A", ROW($1:$5)), ROW(1:1))), "No Active Volunteers")
Формулы массива должны быть завершены с Ctrl + Сдвиг + Enter↵. После правильного ввода в первую ячейку они могут быть заполнены или скопированы или правы точно так же, как и любая другая формула. Без специального завершения CSE вы получите только первое значение, а затем ошибки.
Если вы ищете стандартную формулу, которая не требует CSE, то функция AGGREGATE¹ function может обеспечить обработку с псевдо-массивом, не используя CSE.
=IFERROR(INDEX([Testbook2.xlsx]Sheet1!$A$2:$A$6, AGGREGATE(15, 6, ROW($1:$5)/([Testbook2.xlsx]Sheet1!$B$2:$B$6="A"), ROW(1:1))),"No Active Volunteers")
¹ AGGREGATE function была введена с Excel 2010. Он не доступен в более ранних версиях.
Для версий Excel в версии до 2010 года эта стандартная формула также не требует CSE.
=IFERROR(INDEX([Testbook2.xlsx]Sheet1!$A$2:$A$6, SMALL(INDEX(ROW($1:$5)+([Testbook2.xlsx]Sheet1!$B$2:$B$6<>"A")*1E+99, ,), ROW(1:1))),"No Active Volunteers")
Теперь, когда вы решили передать реальное имя книги, имя листа и диапазоны, которые будут использоваться, здесь работают формулы,
В качестве формулы массива (со всеми диапазонами то же самое размер),
=IFERROR(INDEX('[Volunteer Contact list July 2015.xlsm]Volunteers'!$A$2:$A$65, SMALL(IF('[Volunteer Contact list July 2015.xlsm]Volunteers'!$Q$2:$Q$65="A",ROW($1:$64)),ROW(1:1))),"No Active Volunteers")
в качестве стандартной формуле (со всех диапазонов и того же размера),
=IFERROR(INDEX('[Volunteer Contact list July 2015.xlsm]Volunteers'!$A$2:$A$65, SMALL(INDEX(ROW($1:$64)+('[Volunteer Contact list July 2015.xlsm]Volunteers'!$Q$2:$Q$65<>"A")*1E+99, ,), ROW(1:1))),"No Active Volunteers")
Введите каждый элемент в ячейку соответствующим образом для типа формулы. Заполните, если необходимо, для последующих записей.
Вы можете нам сообщить, как выглядят ваши данные? Трудно понять, что происходит без дополнительной информации. –
Почему вы думаете, что это sql? –