Календарь на лист A4 одной формулой в Гугл таблице
Формула календаря, введённая в 1 ячейку, позволяет получить календарь на год и распечатать на листе A4. Год задаётся в листе Настройки, там же задаются праздники. Приведён пример для Беларуси и России.
=LET(
год; 'Настройки_России'!F1;
праздники;'Настройки_России'!A2:B21;
пустая_колонка; {"";"";"";"";"";"";"";""};
пустая_строка; {""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""\""};
дни_недели;{"Пн"\"Вт"\"Ср"\"Чт"\"Пт"\"Сб"\"Вс"};
_m; LAMBDA(m;
LET(
первый; ДАТА(год; m; 1);
дней; ДЕНЬ(КОНМЕСЯЦА(первый; 0));
сдвиг; ДЕНЬНЕД(первый; 2) - 1;
заголовок; ВЫБОР(m;"Январь";"Февраль";"Март";"Апрель";"Май";"Июнь";"Июль";"Август";"Сентябрь";"Октябрь";"Ноябрь";"Декабрь");
числа; SEQUENCE(6; 7; -сдвиг + 1);
матрица; MAP(числа; LAMBDA(x; ЕСЛИ((x >= 1) * (x <= дней); ЕСЛИ(СУММ(BYROW(праздники;LAMBDA(_row;ЕСЛИ(И(ИНДЕКС(_row;1;1)=x;ИНДЕКС(_row;1;2)=m);1;0))))>0;"["&x&"]";x); "")));
VSTACK({""\заголовок\""\""\""\""\""}; дни_недели; матрица)
)
);
ряд1; HSTACK(_m(1); пустая_колонка; _m(2); пустая_колонка; _m(3));
ряд2; HSTACK(_m(4); пустая_колонка; _m(5); пустая_колонка; _m(6));
ряд3; HSTACK(_m(7); пустая_колонка; _m(8); пустая_колонка; _m(9));
ряд4; HSTACK(_m(10); пустая_колонка; _m(11); пустая_колонка; _m(12));
VSTACK(ряд1; пустая_строка; ряд2; пустая_строка; ряд3; пустая_строка; ряд4)
)
Так же, как в посте Число прописью, написано максимально подробно, потому что так улучшается восприятие и проще отлаживать.
В первых строках задаются ссылки на текущий год и праздники. Можно задать год напрямую, и игнорировать праздники, тогда первые строки выглядели бы так:
год; 2026;
праздники;{""\""};
В таком случае лист Настройки не нужен.
Ссылка с примером
Скопируйте файл себе для просмотра формул и использования в табелях
Формула "Число прописью" для Гугл таблиц
=LET(
_num; ABS(A6);
_rub; ЦЕЛОЕ(_num);
_kop; ОКРУГЛ((_num - _rub) * 100; 0);
_comm1; "Словари (индексы с 1)";
_units_m; {"";"один";"два";"три";"четыре";"пять";"шесть";"семь";"восемь";"девять"};
_units_f; {"";"одна";"две";"три";"четыре";"пять";"шесть";"семь";"восемь";"девять"};
_tens; {"";"десять";"двадцать";"тридцать";"сорок";"пятьдесят";"шестьдесят";"семьдесят";"восемьдесят";"девяносто"};
_hundreds;{"";"сто";"двести";"триста";"четыреста";"пятьсот";"шестьсот";"семьсот";"восемьсот";"девятьсот"};
_teens; {"десять";"одиннадцать";"двенадцать";"тринадцать";"четырнадцать";"пятнадцать";"шестнадцать";"семнадцать";"восемнадцать";"девятнадцать"};
_comm2; "Лямбда: число 0..999 → слова, gender: 0 – мужской, 1 – женский";
_numWords; LAMBDA(_n; _gender;
LET(
_h; ЦЕЛОЕ(_n / 100);
_rest; _n - _h * 100;
_d; ЦЕЛОЕ(_rest / 10);
_u; _rest - _d * 10;
_sH; ЕСЛИ(_h > 0; ИНДЕКС(_hundreds; _h + 1); "");
_sD; ЕСЛИ(И(_rest >= 10; _rest <= 19); ИНДЕКС(_teens; _rest - 9); ЕСЛИ(_d > 0; ИНДЕКС(_tens; _d + 1); ""));
_sU; ЕСЛИ(И(_rest >= 10; _rest <= 19); ""; ЕСЛИ(_u > 0; ИНДЕКС(ЕСЛИ(_gender = 1; _units_f; _units_m); _u + 1); ""));
СЖПРОБЕЛЫ(_sH & " " & _sD & " " & _sU)
)
);
_comm3; "Лямбда: склонение существительного по числу (forms – массив из 3 форм)";
_decline; LAMBDA(_n; _forms;
LET(
_rem; ОСТАТ(ABS(_n); 100);
_idx; ЕСЛИ(И(_rem >= 11; _rem <= 19); 3; ЕСЛИ(ОСТАТ(_rem; 10) = 1; 1; ЕСЛИ(И(ОСТАТ(_rem; 10) >= 2; ОСТАТ(_rem; 10) <= 4); 2; 3)));
ИНДЕКС(_forms; _idx)
)
);
_comm4; "Разбиваем рубли на группы по 3 цифры";
_r1; _rub;
_groupMln; ЦЕЛОЕ(_r1 / 1000000);
_r2; _r1 - _groupMln * 1000000;
_groupThs; ЦЕЛОЕ(_r2 / 1000);
_r3; _r2 - _groupThs * 1000;
_groupUnit; _r3;
_comm5; "Преобразуем каждую группу в слова";
_wordsMln; ЕСЛИ(_groupMln > 0; _numWords(_groupMln; 0) & " " & _decline(_groupMln; {"миллион";"миллиона";"миллионов"}); "");
_wordsThs; ЕСЛИ(_groupThs > 0; _numWords(_groupThs; 1) & " " & _decline(_groupThs; {"тысяча";"тысячи";"тысяч"}); "");
_wordsUnit; ЕСЛИ(_groupUnit > 0; _numWords(_groupUnit; 0) & " " & _decline(_groupUnit; {"рубль";"рубля";"рублей"}); "рублей");
_comm6; "Собираем рублёвую часть (если всё нули – «ноль рублей»)";
_rubPart; ЕСЛИ(
И(_groupMln = 0; _groupThs = 0; _groupUnit = 0);
"ноль " & _decline(0; {"рубль";"рубля";"рублей"});
СЖПРОБЕЛЫ(_wordsMln & " " & _wordsThs & " " & _wordsUnit)
);
_comm7; "Копейки";
_kopStr; ТЕКСТ(_kop; "00");
_kopWords; _kopStr & " " & _decline(_kop; {"копейка";"копейки";"копеек"});
_comm8; "Финальный результат с заглавной буквы";
_full; _rubPart & " " & _kopWords;
ПРОПИСН(ЛЕВСИМВ(_full; 1)) & ПСТР(_full; 2; ДЛСТР(_full) - 1)
)
Вместо A6 во второй строке вставьте адрес с числом.
Написано максимально подробно, с комментариями ( начало с _comm - это комментарий).
Такая максимально подробная разбивка на части сложной задачи упрощает её решение и последующую проверку.
Если интересно, могу выложить ещё интереснейшие формулы)))
Неочевидная шутка
Был в магазине, покупал детям канцелярские принадлежности и попалась на глаза такая тетрадка:
Ну тетрадка и тетрадка, сейчас чего только нет. Потом посмотрел повнимательнее:
Считаю забавным, люблю такие неочевидные шутки.
В плену ритуалов (кф. Инцидент)
52:41 — 57:22
Глотки воды подсчитаны, вещи пронумерованы, а стены покрыты формулами. На бесконечной лестнице двое узников годами следуют жесткому ритуалу, пытаясь сохранить остатки разума. В пространстве, где время потеряло смысл, привычный быт становится единственной гранью между реальностью и безумием. Что на самом деле представляет собой эта ловушка?
Формула (кф. Револьвер)
Формула (30:55 — 34:16)
Джейк Грин сидит в шахматном клубе, погруженный в воспоминания. На экране сменяются кадры его прошлого в одиночной камере тюрьмы. Камера подчеркивает стерильность и замкнутость пространства.
Джейк Грин (закадровый голос): Я выбирал из двух вариантов: 14 лет в общей камере или 7 в одиночке. Я занял одиночку. По 20 часов в день я был заперт в камере между двумя рецидивистами. Они провели там больше лет, чем я себя помню. Один был мастером шахмат, второй — мастером разводок. Несмотря на то, что эти двое ни разу не виделись, они знали друг друга лучше, чем пожилые супруги.
Показывают близнецов-уборщиков, развозящих тележку с книгами по коридору тюрьмы.
Джейк Грин: Раз в день близнецы, зарубившие кого-то топором, катали по коридорам тележку с книгами. Они занимались этим вот уже 22 года. В тюрьме я пристрастился к книгам по теории шахмат, азартных игр, почитывал и более серьезную литературу, вроде теоретической астрофизики, особенно четвертую часть, и математики квантовой механики. Их уважали мои соседи.
Джейк изучает записи своих соседей на полях книг. Он находит схемы и уравнения.
Джейк Грин: Время от времени я перехватывал их разработки новых комбинаций. Шахматы и разводки — опасное сочетание. 10 лет вынужденного одиночества дали им возможность сосредоточиться на изобретении новых способов умыкнуть чужие деньги. Да-да, они думали. Серьезно думали. Мне казалось, что и я парень не дурак, но те двое были мастерами совершенно другого уровня. Они играли в премьер-лиге. Они стремились найти решающую комбинацию, чтобы выиграть в решающей игре. Они всегда думали быстрее и смотрели дальше. И вот они решили, что универсальная формула найдена. Формула, которая поможет сорвать банк. Я был не в состоянии постичь всю глубину той формулы, но они не сомневались в себе. И я верил им. Ведь прежде промашек у них не было.
Воспоминания об исчезновении соседей.
Джейк Грин: И тогда они поняли, что настал их звездный час, а уединение одиночных камер пусть остаётся в прошлом. Засовы и стены их особо не волновали. Мы собирались уйти вместе. Они обещали. Я им верил. Я в них ни на секунду не сомневался. На следующий день они бесследно исчезли. Всю следующую неделю охранники ворошили тюрьму, но так и не нашли доказательств не только побега, но и самого их существования. Они просто испарились.
Джейк выходит из тюрьмы, идет в свой старый гараж, ищет спрятанные деньги.
Джейк Грин: Через два года меня выпустили. Той парке было все известно обо мне. Всё. Все мои маленькие грязные тайны, сколько у меня было денег, где я их прятал... Поганцы до нитки меня обобрали. Эти шустрилы и носков мне оставили, только записку: «Чтобы поумнеть, играй с более умным противником». Но мне досталась их формула. И она сработала. Да ещё как сработала!
Джейк жил дураком и не стремился образовываться, развивать свои способности, трансформировать восприятие, накапливать знания, тем самым создавая ненужные риски своими необдуманными действиями и решениями. Только искусственно созданные условия в виде одиночной камеры и двух необычных сокамерников вынудили его образовываться. Здесь работает выражение «Пока жареный петух не клюнет — мужик не перекрестится». Если у человека нет никаких условий для того результата, который ему необходим, результат достигнут не будет. В достижении результата необходимо думать не над своей мотивацией, а над созданием таких условий, где будет проще сделать, чем не сделать.
«По 20 часов в день я был заперт в камере между двумя рецидивистами» — говорит Джейк. Сложно остаться бездумным дураком, находясь по 20 часов в день между двумя высокоинтеллектуальными людьми, слушая их разговоры, рассуждения, умозаключения. Здесь отлично работает цитата: «Если вы общаетесь с четырьмя миллионерами, вы будете пятым. Если общаетесь с тремя уверенными в себе людьми, станете четвертым. Если вы общаетесь с двумя идиотами, станете третьим». Как бы не хотелось верить в силу индивидуальных качеств, приоритет влияния на проявляемые и формируемые свойства личности, как и прочие характеристики, зависят от внешних систем (условий, окружения). Если вы большую часть дня находитесь с токсичными людьми, то это будет лишь вопрос времени, когда вы начнете проявляться схожим образом. Форма может быть другой, но суть останется той же. Нас во многом определяет окружение и условия жизни.
В связи с этим легко сделать вывод, что попав в тюрьму, маргинальный элемент не переосмысливает свою жизнь так, как того ожидает карающий орган. Маргинальный элемент лишь закрепляется и усиливается в тех позициях, что внушаются и навеиваются местным контингентом. Причем никого в дальнейшем не удивляет, что выйдя на свободу, он оказывается самым злостным рецидивистом. Здесь требуется система для изменения восприятия, понимания и трансформации личности в целом. Только системе это не требуется. Намного дешевле и проще эксплуатировать неугодных для общества в своих корыстных целях. В пример можно привести тюрьмы разных стран, куда загоняют заключенных с целью поживиться на их рабочей силе за ничто.
«В тюрьме я пристрастился к книгам по теории шахмат, азартных игр, почитывал и более серьезную литературу, вроде теоретической астрофизики, особенно четвертую часть, и математики квантовой механики. Их уважали мои соседи» — говорит Джейк. Вне рамок своего заключения у Джейка бы никогда не возникло мысли вникать в подобную литературу. Он бы считал это бесполезной тратой времени. Только познакомившись с мастерами своего дела и увидев их интересы, он заинтересовался. Это попытка пройти схожий путь, чтобы получить такой же результат. Но бездумная мимикрия без учета сценария жизни и контекста окружающей действительности не приведет к схожим результатам. Иногда результаты могут быть прямо противоположны ожиданиям человека. Нет смысла тотально копировать того, чьи результаты желаешь повторить. Почему? Потому что многие нюансы могут быть скрыты и не проговорены тем, чей опыт желаешь повторить. Необходимо выстраивать свою систему, а не копировать чужую. В пример вспоминается кейс одной компани, за которой повторяли конкуренты. Те сделали ход конем и договорились с журналами/газетами, где разместили свою рекламу бесплатно, объяснив, что их конкуренты обязательно повторят и заплатят. Конкуренты повторили и прожгли свои бюджеты в никуда, когда изначальная компания использовала их по назначению.
«10 лет вынужденного одиночества дали им возможность сосредоточиться на изобретении новых способов умыкнуть чужие деньги» — говорит Джейк. Люди не меняются, а лишь трансформируют вектор реализации. Ави и Заку никто не мешал за эти десять лет выбрать отрасль и продумать такую структуру бизнеса/компании, чтобы она была прибыльной и масштабируемой. Вместо этого они нарабатывали навыки обмана и мошенничества, чтобы обдурить других. Оба варианта фактически умыкают чужие деньги, но в одном варианте они для этого создают пользу и благо, одобряемое обществом, а в другом варианте плодят разбитые жизни.
«Я был не в состоянии постичь всю глубину той формулы, но они не сомневались в себе» — говорит Джейк. Отсутствие их сомнений вызвано детальным пониманием всевозможных переменных и алгоритмов, что в себе содержит формула. Джейк не обладает необходимыми знаниями, восприятием, представлениями, чтобы понимать структуру и область применения формулы. Это искусственно созданный инструмент в чужой системе мировосприятия. Джейк никогда не сможет познать формулу с той глубиной, с которой её познал создатель.
Пособие: как найти повторы во многих списках в Excel и Calc / Find duplicates in lists +теория
1. НАГЛЯДНЫЙ СПОСОБ
Достаточно частая задача — сравнение нескольких списков и выявление повторов между ними.
Допустим, у вас четыре списка (напр., email или товаров) и нужно понять, какие значения из каких списков пересекаются друг с другом (не усложняя Сводными таблицами, ВПР)?
Мне удобно это увидеть в виде битовой маски «0110», что будет означать, что конкретное значение есть только в списке 2 и списке 3.
Какими формулами это можно сделать в Excel/Calc?
(файл-пример см. внизу)
а) В колонку «C» вставляете первый список, в «D» второй, в «E» третий, «F» четвёртый.
б) В колонку «B» вставляете все списки один за другим.
в) В первой строке прописываете заголовки.
г) В ячейку «A2» вставляете формулу:
=СЧЁТЕСЛИ(C:C; B2) & СЧЁТЕСЛИ(D:D; B2) & СЧЁТЕСЛИ(E:E; B2) & СЧЁТЕСЛИ(F:F; B2)
или
=COUNTIF(C:C; B2) & COUNTIF(D:D; B2) & COUNTIF(E:E; B2) & COUNTIF(F:F; B2)
д) И, наконец, дважды щелкаете по правому нижнему углу ячейки «A2» (для автозаполнения).
Готово. С помощью битовой маски получаем понимание повторов.
Например, «0111» означает, что конкретный email/фрукт/показатель из колонки «B» повторятся во всех четырёх списках, кроме первого. «1000» означает, что значение только в первом списке.
ДОПОЛНИТЕЛЬНО-1: Если видите «0311», то можно понять, что во втором списке ещё и внутри списка дубликаты.
ДОПОЛНИТЕЛЬНО-2: Если видите «0000», значит явно закралась ошибка: в общем списке есть значение, которого нет ни в одном исходном списке.
2. АЛЬТЕРНАТИВА: ЕДИНЫЙ СПИСОК
Другой интересный способ — через условные веса.
Например, у нас аналогично четыре списка. Берём только одну колонку, куда засовываем значения вниз, допустим, в колонку «A» (или в textarea, если нет офисного пакета, но есть браузер).
Последний список копируем и вставляем 1 раз,
предпоследний список ниже вставляем 2 раза,
второй список копипастим 4 раза,
первый список копируем и вставляем вниз уже 8 раз подряд.
В общем виде подход для весов при N списках у нас идёт через удвоение 2^(N-1) (напр., при четырёх списках =2^(4-1)=2^3=8 "вес самого большого"), а возможных пересечений получается как 2^(N-1)*2-1 (напр., при четырёх списках =2^(4-1)*2-1=8*2-1=15 "непустых пересечений").
Дальше считаем повторы значений.
Полотно данных можно вставить, например, сюда: https://www.somacon.com/p568.php (если беспокоит приватность данных, скачайте страницу через CTRL+S и отключите Интернет, оно сработает локально!) (а можете использовать другой или самописный инструмент).
При четырёх списках каждое значение будет иметь число от «1» до «15».
Допустим, вы видите число «6». Удивительно, но если вы переведёте это в двоичную систему, то получите «0110» (или «110»). И это и будет значить, что это значение есть во втором и третьем списке, но нет ни в первом, ни в четвёртом!
«1» будет означать «0001» (или «1»), то есть значение имеется лишь в последнем списке,
«8» будет означать «1000», то есть лишь в первом списке,
«15» будет означать «1111», то есть значение имеется во всех списках!
СПРАВОЧНО-1: Держите двоичные числа с 0 до 31 (для пяти списков): 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111, 10000, 10001, 10010, 10011, 10100, 10101, 10110, 10111, 11000, 11001, 11010, 11011, 11100, 11101, 11110, 11111. Дальше логика счёта такая же!
СПРАВОЧНО-2: В Excel/Calc переход туда и обратно осуществляется с помощью формул «ДВ.В.ДЕС» («BIN2DEC») и «ДЕС.В.ДВ» («DEC2BIN»).
3. НАГЛЯДНЫЙ СПОСОБ EXCEL/CALC: СОВЕРШЕНСТВОВАНИЕ
Есть два сюжета.
> Во-первых, вы можете захотеть избежать ненаглядной конкатенации, то есть ненаглядного объединения текстовых строк,
когда у вас в одном списке оказалось десять и больше повторов.
Тогда формулу в ячейке «A2» можно сделать с пробелами, чтобы получить вид вроде «0 12 1 1»:
=СЧЁТЕСЛИ(C:C; B2) &" "& СЧЁТЕСЛИ(D:D; B2) &" "& СЧЁТЕСЛИ(E:E; B2) &" "& СЧЁТЕСЛИ(F:F; B2)
или
=COUNTIF(C:C; B2) &" "& COUNTIF(D:D; B2) &" "& COUNTIF(E:E; B2) &" "& COUNTIF(F:F; B2)
> Во-вторых, вы можете захотеть иметь только нули и единицы (если вам важно сохранять двоичную систему и вы не пытаетесь смотреть на повторы в самих списках):
=--(СЧЁТЕСЛИ(C:C; B2)>0) & --(СЧЁТЕСЛИ(D:D; B2)>0) & --(СЧЁТЕСЛИ(E:E; B2)>0) & --(СЧЁТЕСЛИ(F:F; B2)>0)
или
=--(COUNTIF(C:C; B2)>0) & --(COUNTIF(D:D; B2)>0) & --(COUNTIF(E:E; B2)>0) & --(COUNTIF(F:F; B2)>0)
Тут двойной минус перед скобкой превращает ИСТИНА (TRUE) в 1, а ЛОЖЬ (FALSE) в 0.
Если же оставляете анализ повторов внутри каждого списка, что бывает полезно, то с помощью фильтров/регулярных выражений типа «[2-9]» или вопросительного знака можно отыскивать значения больше единицы, но сюжет фильтров — отдельная крупная тема, без которой
при сравнении повторов любого количества списков
вполне можно обойтись!
Таким образом, здесь мы рассмотрели,
как удобно находить пересечения между несколькими заданными списками
и снизить вероятность ошибок/пропусков при их анализе.
> ПРИЛОЖЕНИЕ: Ссылка на файл (.xlsx)
Делитесь своими полезными советами!








