Поиск значения из другой вкладки / листа в листах Google на основе ссылки на ячейку - PullRequest
1 голос
/ 27 мая 2019

Я пытаюсь создать страницу поиска в листах Google, где пользователь вводит значение в одну ячейку (-и), а затем в другие ячейки автоматически заполняет значения из другой вкладки / листа на основе значения, введенного в ячейку поиска. (ы).

Я пытаюсь использовать VLOOKUP в массиве, но это дает либо ошибку, либо N/A.

У меня есть «sheet1» с данными из форм Google (столбцы от A до BN), и я пытаюсь сделать страницу поиска в «Sheet2», где сверху пользователь может написать, например, идентификационный номер, и Я хочу получить значение столбца из таблицы «sheet1», соответствующее идентификатору, указанному в той же строке для таблицы «sheet1».

Я уже проверил:

Есть и другие, но я не ищу никаких сценариев.

В простой форме формула будет:

=VLOOKUP(B3,'sheet1'!A:BN,40,False)

Но из-за того, что у меня слишком много столбцов, и мне нужно будет также получить другие значения, я использую:

=ArrayFormula(IF(LEN(B3),VLOOKUP(B3,{'sheet1'!A:BN},{iferror(match("ID-number",'sheet1'!A1:BN1,0),"No match")},FALSE),""))

Пояснение:

B3 - это ячейка, в которую пользователь вводит значение идентификатора

Тогда ...:

{'sheet1'!A:BN},{iferror(match("ID-number",'sheet1'!A1:BN1,0),"No match")}

- это место, где я ищу номер столбца заголовка значения, которое я ищу, в данном случае это AN, который будет столбцом 40, но может быть любым другим.

И тогда ArrayFormula объясняется тем, что sheet1 - это данные из формы Google, которая используется и постоянно увеличивает строки.

Это дает мне ошибку #N/A, потому что он не находит значение (ввод в B3 на листе 2) в диапазоне (вкладка sheet1 во всех столбцах от A до BN, которые имеют значения)

Пример листа с рабочим ответом [здесь]: (https://docs.google.com/spreadsheets/d/1qLcJdCn4EdV7lPOAfZ_CMak1LBkve45FL5SXyqBV3L8/edit?usp=sharing)

ПРИМЕЧАНИЕ: Значения для поиска / возврата находятся в одной строке на листе 1, и при вводе нового поиска изменяется только строка.

Ответы [ 2 ]

1 голос
/ 28 мая 2019
=ARRAYFORMULA(
 IF(B3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
            VLOOKUP(B3,            data!A:E,  {1,2,3,5}, 0)), CHAR(10))), "♦", ),
 IF(C3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
            VLOOKUP(C3, {data!C:C, data!A:E}, {2,3,4,6}, 0)), CHAR(10))), "♦", ), 
 IF(D3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
            VLOOKUP(D3, {data!E:E, data!A:E}, {2,3,4,6}, 0)), CHAR(10))), "♦", ), ))))

0


ОБНОВЛЕНИЕ:

=IFERROR(ARRAYFORMULA(
 IF(B3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
            VLOOKUP(B3, {data!AN:AN, data!A:BN},  {41,38,19,11,55}, 0)), CHAR(10))), "♦", ),
 IF(C3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
            VLOOKUP(C3, {data!AK:AK, data!A:BN}, {41,38,19,11,55}, 0)), CHAR(10))), "♦", ), 
 IF(E3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
            VLOOKUP(E3, {data!BJ:BJ, data!A:BN}, {41,38,19,11,55}, 0)), CHAR(10))), "♦", ), 
 IF(D3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
            VLOOKUP(D3, {data!R:R, data!A:BN}, {41,38,19,11,55}, 0)), CHAR(10))), "♦", ), ))))), "no match found")
0 голосов
/ 28 мая 2019

Нельзя использовать совпадение внутри формулы массива. Я предлагаю вам использовать что-то вроде

=ArrayFormula(IF(LEN(B3),VLOOKUP(B3,{'sheet1'!AN:AN,'sheet1'!A:BN},column('sheet1'!X:X)-column('sheet1'!A:A)+1,FALSE),""))

где X - результирующий столбец (измените его в соответствии с вашими потребностями).

...