Сообщение «Нет совпадения» в результатах поиска Google Листов для ячеек без данных - PullRequest
1 голос
/ 03 июня 2019

На основе ( Поиск значения из другой вкладки / листа в листах Google на основе ссылки на ячейку ) у меня есть 2 вкладки / листы в Google Sheets, одна из которых собирает данные из форм Google, а другая - это поисковый лист. Вот пример (тот же, что и для вопроса, упомянутого выше, но с добавленными данными): (https://docs.google.com/spreadsheets/d/1qLcJdCn4EdV7lPOAfZ_CMak1LBkve45FL5SXyqBV3L8/edit#gid=354631176)

В верхней части листа поиска у меня есть поля поиска, которые пользователь заполняет, и вниз в другой ячейке. У меня есть формула поиска, которая возвращает транспонированный список значений, найденных в той же строке из Sheet1, соответствующих значению, найденному в Sheet2 , Но когда он встречает пустую ячейку на листе 1, он либо прекращает поиск значений, либо выдает значение следующей непустой ячейки независимо от указанных строк, которые нужно вернуть.

Пояснение:

В верхней части листа поиска у меня есть поля поиска в ячейках B3: F3, которые пользователь заполняет (строка 3), и внизу в ячейке B8 у меня есть формула поиска:


    =ARRAYFORMULA(
    IF(B3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
        VLOOKUP(B3, {'Respuestas de formulario 2'!AN:AN, 'Respuestas de formulario 2'!A:BN}, 
                    {24,3,21,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ),
    IF(C3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
        VLOOKUP(C3, {'Respuestas de formulario 2'!AK:AK, 'Respuestas de formulario 2'!A:BN}, 
                    {24,3,21,23,14,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ), 
    IF(D3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
        VLOOKUP(D3, {'Respuestas de formulario 2'!AR:AR, 'Respuestas de formulario 2'!A:BN}, 
                    {24,3,20,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ),
    IF(E3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
        VLOOKUP(E3, {'Respuestas de formulario 2'!W:W, 'Respuestas de formulario 2'!A:BN}, 
                    {24,3,21,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ),
    IF(F3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
        VLOOKUP(F3, {'Respuestas de formulario 2'!Z:Z, 'Respuestas de formulario 2'!A:BN}, 
                    {24,3,21,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ), ))))))

Формула ищет значения, введенные с B3 по F3 (на листе 2), чтобы сопоставить их с данными на листе 1 (называемые «Respuestas de formulario 2»), а затем возвращает вертикальный список значений, найденных в этой строке. , пропуская одну ячейку после каждого результата, в определенном порядке (поэтому числа между {} не в порядке).

Однако, не все ячейки на листе 1 могут содержать данные (например, если в Google Forms есть пропущенный раздел, например «Если« да », переходите к разделу 2; если« нет », переходите к разделу 3»). Проблема состоит в том, что когда формула встречает пустую ячейку, кажется, что она либо прекращает поиск других результатов, либо перебрасывает значения и возвращает данные из новой ячейки, которая имеет значения.

Я пытался покончить с этим, но это не сработало:


 ...{24,34,3,21,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ), ))))), "no match found")

Затем я попытался добавить «не найдено совпадений» в каждый IF, как это, но тоже не сработало:


    IF(B3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
        VLOOKUP(B3, {'Respuestas de formulario 2'!AN:AN, 'Respuestas de formulario 2'!A:BN}, 
                    {24,3,21,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0,"no match found")), CHAR(10))), "♦", ),

Я хочу представить пустое совпадение в каждой ячейке столбца результатов, в то время как найденные значения соответствуют значениям, соответствующим перечисленным строкам в {} именно в таком порядке.

1 Ответ

1 голос
/ 03 июня 2019

Это обходное решение проблемы, а не исправление кода.

Что я сделал, так это создал сводную таблицу, которая извлекает данные из листа1 (тот, который содержит ответы Google Forms) и заполняет все пустые ячейки N / A. Я сделал это, используя следующую формулу в B1 и перетащив ее полностью в ячейку BN1 на новом листе под названием «Pivot_sheet»:

    =arrayformula(IF(LEN('Respuestas de formulario 2'!$A:$A), IF('Respuestas de formulario 2'!B:B<>"",'Respuestas de formulario 2'!B:B,"N/A"),""))

ПРИМЕЧАНИЕ. В ячейке A1 должна быть указана временная метка для ответов, которые я просто использовал:

    =ArrayFormula('Sheet1'!A:A)

Затем я заменил ссылку в коде для формулы поиска с 'Respuestas de formulario 2'! на имя нового листа "Pivot_sheet". Как это:

    ... IF(B3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
    VLOOKUP(B3, {'Pivot_sheet'!AN:AN, 'Pivot_sheet'!A:BN}, ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...