У меня есть лист с именем Finder, на котором я создал инструмент для поиска на других листах (с именами №1, №2 и т. Д.). Проблема, с которой я столкнулся, заключается в том, что я не могу использовать функцию КОСВЕННО в некоторых случаях, как описано ниже:
{ = IF(Finder!$B$4 = 1,
INDEX(INDIRECT("'#" & (ROW() - 5) & IF(MOD(COLUMN(), 3) = 0, "'!$A$2:$A$100", "'!$B$2:$B$100")),
SMALL(IF(ISERROR(SEARCH(Finder!$F$4, '#1'!$B$2:$B$100)),
"",
ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100")) - MIN(ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100"))) + 1),
INT(COLUMN() / 3)),
1),
IF(Finder!$B$4 = 2,
INDEX(INDIRECT("'#" & (ROW() - 5) & "'!" & IF(MOD(COLUMN(), 3) = 0, "$A$2:$A$100", "$B$2:$B$100")),
SMALL(IF(Finder!$F$4 = '#1'!$B$2:$B$100,
ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100")) - MIN(ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100"))) + 1,
""),
INT(COLUMN() / 3)),
1),... }
Концептуальная форма:
{ = IF(Finder!$B$4 = 1,
INDEX(using INDIRECT to address a range in another sheet successfully,
SMALL(IF(ISERROR(SEARCH(cannot use INDIRECT here!)),
"",
Desired value),
Desired item),
1),
IF(Finder!$B$4 = 2,
INDEX(using INDIRECT to address a range in another sheet successfully,
SMALL(IF(cannot use INDIRECT here!,
Desired value,
""),
Desired item),
1),... }
Мне нужно указать диапазон на других листах, как показано ниже:
SMALL(IF(ISERROR(SEARCH(Finder!$F$4, '#1'!$B$2:$B$100)),...
SMALL(IF(Finder!$F$4 = '#1'!$B$2:$B$100,...
это нормально, но я не могу использовать INDIRECT, чтобы сделать формулу динамической:
SMALL(IF(ISERROR(SEARCH(Finder!$F$4, INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100"))),...
SMALL(IF(Finder!$F$4 = INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100"),...
заранее спасибо
ОБНОВЛЕНИЕ:
Инструмент Finder содержит множество ячеек. На рисунке показано, почему мне нужно получить имя листа с помощью функции ROW()
.
ОБНОВЛЕНИЕ 2:
Поле со списком на листе Finder содержит четыре элемента и использует ячейку $ B $ 4:
- 1- Approximate Search
- 2- Exact Search
- 3- Full Index
- 4- Specific Category
Вот полный код формулы:
= IF(ISERROR(IF(Finder!$B$4 = 1,
INDEX(INDIRECT("'#" & (ROW() - 5) & IF(MOD(COLUMN(), 3) = 0, "'!$A$2:$A$100", "'!$B$2:$B$100")),
SMALL(IF(ISERROR(SEARCH(Finder!$F$4, '#1'!$B$2:$B$100)),
"",
ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100")) - MIN(ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100"))) + 1),
INT(COLUMN() / 3)),
1),
IF(Finder!$B$4 = 2,
INDEX(INDIRECT("'#" & (ROW() - 5) & "'!" & IF(MOD(COLUMN(), 3) = 0, "$A$2:$A$100", "$B$2:$B$100")),
SMALL(IF(Finder!$F$4 = '#1'!$B$2:$B$100,
ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100")) - MIN(ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100"))) + 1,
""),
INT(COLUMN() / 3)),
1),
IF(Finder!$B$4 = 3,
IF(MOD(COLUMN(), 3) = 0,
20 * (ROW() - 6) + COLUMN() / 3,
INDIRECT(ADDRESS(INT(COLUMN() / 3) + 1, 2, 1, , "#" & (ROW() - 5)))),
INDEX(INDIRECT("'#" & (ROW() - 5) & "'!" & IF(MOD(COLUMN(), 3) = 0, "$A$2:$A$100", "$B$2:$B$100")),
SMALL(IF(Finder!$F$4 = '#1'!$I$2:$I$100,
ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100")) - MIN(ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100"))) + 1,
IF(ISERROR(SEARCH(Finder!$F$4 & ",", '#1'!$I$2:$I$100)),
IF(ISERROR(SEARCH("," & Finder!$F$4, '#1'!$I$2:$I$100)),
IF(ISERROR(SEARCH(", " & Finder!$F$4, '#1'!$I$2:$I$100)),
"",
ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100")) - MIN(ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100"))) + 1),
ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100")) - MIN(ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100"))) + 1),
ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100")) - MIN(ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100"))) + 1)),
INT(COLUMN() / 3)),
1))))),
" ",
IF(Finder!$B$4 = 1,
INDEX(INDIRECT("'#" & (ROW() - 5) & IF(MOD(COLUMN(), 3) = 0, "'!$A$2:$A$100", "'!$B$2:$B$100")),
SMALL(IF(ISERROR(SEARCH(Finder!$F$4, '#1'!$B$2:$B$100)),
"",
ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100")) - MIN(ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100"))) + 1),
INT(COLUMN() / 3)),
1),
IF(Finder!$B$4 = 2,
INDEX(INDIRECT("'#" & (ROW() - 5) & "'!" & IF(MOD(COLUMN(), 3) = 0, "$A$2:$A$100", "$B$2:$B$100")),
SMALL(IF(Finder!$F$4 = '#1'!$B$2:$B$100,
ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100")) - MIN(ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100"))) + 1,
""),
INT(COLUMN() / 3)),
1),
IF(Finder!$B$4 = 3,
IF(MOD(COLUMN(), 3) = 0,
20 * (ROW() - 6) + COLUMN() / 3,
INDIRECT(ADDRESS(INT(COLUMN() / 3) + 1, 2, 1, , "#" & (ROW() - 5)))),
INDEX(INDIRECT("'#" & (ROW() - 5) & "'!" & IF(MOD(COLUMN(), 3) = 0, "$A$2:$A$100", "$B$2:$B$100")),
SMALL(IF(Finder!$F$4 = '#1'!$I$2:$I$100,
ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100")) - MIN(ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100"))) + 1,
IF(ISERROR(SEARCH(Finder!$F$4 & ",", '#1'!$I$2:$I$100)),
IF(ISERROR(SEARCH("," & Finder!$F$4, '#1'!$I$2:$I$100)),
IF(ISERROR(SEARCH(", " & Finder!$F$4, '#1'!$I$2:$I$100)),
"",
ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100")) - MIN(ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100"))) + 1),
ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100")) - MIN(ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100"))) + 1),
ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100")) - MIN(ROW(INDIRECT("'#" & (ROW() - 5) & "'!$B$2:$B$100"))) + 1)),
INT(COLUMN() / 3)),
1)))))