такой момент: делаю объединение из 2-х таблиц в одну с помощью QUERY
Пишу формулу:
Код
query({'LETO'!C2:L;'ZIMA'!C2:L};"select * where Col1 is not null")
И данные успешно вставляются, но при добавлении данных в таблицы LETO и ZIMA в обще таблице сначала отображаются данные из таблицы LETO, а потом ZIMA
Подскажите пожалуйста как сделать так, чтобы можно сделать их чередование и общей таблице данные вносились именно по порядку введения данных в таблицы LETO и ZIMA
Заранее спасибо
Здравствуйте всем
такой момент: делаю объединение из 2-х таблиц в одну с помощью QUERY
Пишу формулу:
Код
query({'LETO'!C2:L;'ZIMA'!C2:L};"select * where Col1 is not null")
И данные успешно вставляются, но при добавлении данных в таблицы LETO и ZIMA в обще таблице сначала отображаются данные из таблицы LETO, а потом ZIMA
Подскажите пожалуйста как сделать так, чтобы можно сделать их чередование и общей таблице данные вносились именно по порядку введения данных в таблицы LETO и ZIMA
как сделать так, чтобы можно сделать их чередование и общей таблице данные вносились именно по порядку введения данных в таблицы LETO и ZIMA
Чтобы задать порядок записей, о котором Вы говорите, а именно (если правильно понял), "1-я запись из LETO, 1-я запись из ZIMA, 2-я запись из LETO, 2-я запись из ZIMA и т.д.", надо на лету организовать подходящую нумерацию записей обеих таблиц, а затем отсортировать все записи по этим вспомогательным номерам внутри общей таблицы. Для нумерации записей привлечем функцию SEQUENCE (в дополнительном виртуальном столбце), а внутри совпадающих номеров "разведем" записи обеих таблиц, добавив к каждому номеру небольшой десятичный "довесок": 0,1 для таблицы LETO и 0,2 для таблицы ZIMA. После выполнения сортировки вернем пользователю только первоначальные столбцы диапазона C2:L, скрыв виртуальный столбец с нумерацией.
С учетом вышесказанного формула на базе QUERY может выглядеть так: [vba]
Код
=QUERY( ARRAY_CONSTRAIN( SORT({ {LETO!C2:L \ ArrayFormula(SEQUENCE(ROWS(LETO!C2:L))+0,1)}; {ZIMA!C2:L \ ArrayFormula(SEQUENCE(ROWS(ZIMA!C2:L))+0,2)} }; COLUMNS(LETO!C2:L)+1; TRUE); ROWS(LETO!C2:L)+ROWS(ZIMA!C2:L); COLUMNS(LETO!C2:L)); "select * where Col1 is not null")
[/vba]
Можно обойтись без QUERY, заменив условие "Col1 is not null" на NOT(ISBLANK(...!C2:C)) при использовании функции FILTER: [vba]
Количество строк, возвращаемое функцией ARRAY_CONSTRAIN, можно без опаски задать с избытком - в этом случае будут выведены только актуальные записи, имеющиеся в выборке. Поэтому, не мудрствуя лукаво, зададим это количество максимально возможной суммой количеств строк в обеих таблицах: [vba]
как сделать так, чтобы можно сделать их чередование и общей таблице данные вносились именно по порядку введения данных в таблицы LETO и ZIMA
Чтобы задать порядок записей, о котором Вы говорите, а именно (если правильно понял), "1-я запись из LETO, 1-я запись из ZIMA, 2-я запись из LETO, 2-я запись из ZIMA и т.д.", надо на лету организовать подходящую нумерацию записей обеих таблиц, а затем отсортировать все записи по этим вспомогательным номерам внутри общей таблицы. Для нумерации записей привлечем функцию SEQUENCE (в дополнительном виртуальном столбце), а внутри совпадающих номеров "разведем" записи обеих таблиц, добавив к каждому номеру небольшой десятичный "довесок": 0,1 для таблицы LETO и 0,2 для таблицы ZIMA. После выполнения сортировки вернем пользователю только первоначальные столбцы диапазона C2:L, скрыв виртуальный столбец с нумерацией.
С учетом вышесказанного формула на базе QUERY может выглядеть так: [vba]
Код
=QUERY( ARRAY_CONSTRAIN( SORT({ {LETO!C2:L \ ArrayFormula(SEQUENCE(ROWS(LETO!C2:L))+0,1)}; {ZIMA!C2:L \ ArrayFormula(SEQUENCE(ROWS(ZIMA!C2:L))+0,2)} }; COLUMNS(LETO!C2:L)+1; TRUE); ROWS(LETO!C2:L)+ROWS(ZIMA!C2:L); COLUMNS(LETO!C2:L)); "select * where Col1 is not null")
[/vba]
Можно обойтись без QUERY, заменив условие "Col1 is not null" на NOT(ISBLANK(...!C2:C)) при использовании функции FILTER: [vba]
Количество строк, возвращаемое функцией ARRAY_CONSTRAIN, можно без опаски задать с избытком - в этом случае будут выведены только актуальные записи, имеющиеся в выборке. Поэтому, не мудрствуя лукаво, зададим это количество максимально возможной суммой количеств строк в обеих таблицах: [vba]