2017-01-09 6 views
0

Я немного пытаюсь написать запрос.Google Таблицы. Запрос для создания «Мастер-сводки» на другом листе, когда мастер-лист установлен в состояние.

У меня есть лист Google (here's a copy) Что мне нужно написать запрос, чтобы создать «основное резюме». Столбец столбца U находится на вкладке «Мастер». В принципе, мне нужно импортировать столбцы C D E и F из листа, который совпадает с именем в столбце T, для выбранного имени, которое соответствует строке.

Я знаю, что мне нужно запросить индивидуальный лист и импортировать данные с чем-то вроде

=QUERY(MASTER!T:T,"SELECT MIRANDA! C,D,E,F WHERE MASTER!T:T ='Miranda'",0) 

Но я не получаю нигде с этим. Моя другая мысль просто работает ВЫБЕРИТЕ функцию как

=SELECT MIRANDA (C,D,E,F) WHERE MASTER!T:T ='Miranda' 

Но это тоже неправильно :) Я подозреваю, что мой синтаксис выключен, так как я все еще учусь SQL. И я считаю, что приложения Google используют слегка измененную версию. Что я делаю не так?

ответ

1

Первой частью функции запроса является диапазон запроса. Вторая часть - это то, что нужно захватить. Так что я думаю, что вы будете искать это:

=QUERY(MASTER!A:T,"SELECT C,D,E,F WHERE T ='Miranda'",0) 

и вы не будете получать какой-либо из заголовков столбцов, как 0 говорит, чтобы не использовать любую строку в качестве заголовка.

Здесь перечислены столбцы C, D, E и F для строк, где T - Миранда.

EDIT:

Поскольку вы не показывая проставлены в каждом из отдельных листов, это будет трудно, чтобы получить один матч, но Колонка M должен быть достаточно безопасным для проверки против до тех пор, как это требуется в вашей форме.

=FILTER(MIRANDA!C2:F, MIRANDA!C2:C=M2) 

возвращает массив ячеек, C через F, для строки на вкладке Miranda, совпадающей со значением М2. Точно так же они помещают их в колонку, содержащую формулу и следующие 3. Чтобы получить их в одной ячейке, вам необходимо зарегистрироваться Присоединиться к ним:

=join("|",FILTER(MIRANDA!C2:F, MIRANDA!C2:C=M2)) 

Это положит | символ между каждым элементом столбца. Изменить "|" к чему бы вы хотели.

Итак, чтобы сделать эту работу, получая значение ячейки T, вам нужно INDIRECT():

=join("|",FILTER(INDIRECT(T2 & "!C:F"), INDIRECT(T2 & "!C:C")=M2)) 

Другой вариант, особенно если вы включили метку времени в каждой вкладке будет использовать ВПР смотреть вверху столбца метки времени. Он не может работать, а также с использованием колонки M, хотя:

=VLOOKUP(M2, INDIRECT(T2 & "!C:F"), 1, FALSE) 

Поскольку вы используете специальный скрипт, вы можете также использовать один, чтобы скопировать формулу вниз, так как вы не можете применить ArrayFormula() для любой из этих методов. Я считаю, что есть несколько примеров сценариев, которые делают это. Проблема заключается в получении диапазона путем ссылки на другую ячейку. Единственный способ, которым я это знаю, - это функция INDIRECT(), и она не поддерживает массивы. Другой вариант - написать специальную формулу, которая возвращает требуемое значение диапазона и работает с формулой array.

+0

Это работает, как указано, но мне нужно импортировать столбцы C, D, E, F из имени листа, найденного в столбце Master T, в главный столбец U. Поэтому я считаю, что мне нужно, чтобы быть в состоянии чтобы сообщить аргументу SELECT, какой лист импортировать из – Jensen010

+0

. Простым способом, который я могу придумать, заключается в том, чтобы сообщить клиенту, что они мне нужны, чтобы создать еще один столбец на каждом отдельном листе, который запрашивает мастер, и импортирует эти столбцы обратно на главный лист , Желательно, однако, я хотел бы предоставить им те функции, которые они запросили. – Jensen010

+1

У вас есть. Думаю, у меня есть то, что тебе нужно. Вопрос в том, какая информация возвращается в столбце U? Я обновлю свой ответ, чтобы отразить это, но поставил формулу в V2 листинга мастера, чтобы получить то, что, как я полагаю, после вас, но (в настоящее время) возвращает всю строку из листа Миранды. –