Google Sheets добавляет вспомогательный столбец в массив без необходимости редактирования исходного кода - PullRequest
0 голосов
/ 28 июня 2019

этот код работает нормально

=arrayformula({Sheet1!A:A;Sheet2!A:A})

, но я хочу добавить столбец рядом с ним

=arrayformula({Sheet1!A:A,"from sheet 1";Sheet2!A:A,"from sheet 2"})

Есть ли способ, которым я могу просто сделать это, чтобы сделать мой запрос намного чищеили мне действительно нужно создать группу вспомогательных столбцов на каждом листе, потому что я не могу предсказать объем данных.Мне также любопытно, потому что могут быть ситуации, когда я не могу отредактировать исходные данные, которые я пытаюсь извлечь таким образом.

например, вывод данных должен выглядеть следующим образом ... Два столбца ...

a sheet1
b sheet1
c sheet2
d sheet2
e sheet2

Я знаю, как сделать это с помощью вспомогательного столбца, но хотелось бы, чтобы был способ добавить его в формулу массива, обычно я бы добавил его, но в этом случае я не знаю, сколькопоэтому строки и т. д. должны будут повторяться «с листа 1», «с листа 1» снова и снова в формуле для неопределенного числа раз.

Моим самым чистым решением сейчас является добавление этого вспомогательного столбца

=arrayformula(if(isblank(A:A),"","sheet1"))

но я хочу знать, насколько «компактными» я могу составлять свои формулы с помощью {..., ...; .., ...} ради здравомыслия, но также и для того, чтобытакое же поведение без доступа к редактированию исходного листа или необходимости его дублирования.

1 Ответ

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

вы можете либо играть с REPT на # из <> "" строк, либо использовать и добавлять с SPLIT, например:

=ARRAYFORMULA(SPLIT({Sheet1!A1:A10&"♦Sheet1";Sheet2!A1:A10&"♦Sheet2"}, "♦", 1, 0))

enter image description here


также в QUERY вы можете создавать поддельные столбцы, такие как:

=QUERY(Sheet1!A1:B10, "select A,B,'Sheet1' label 'Sheet1'''", 0)
...