До списку уроків
11 клас · Урок 3 з 14

Дані під контролем: чистка таблиці й формули

виконано0%
Крок 1

Що робимо сьогодні

Модуль I · IT Skills (Cloud Services & Design) · 120 хвилин · тема 3, урок 1 з 2

Мета. У тебе вже є бриф стартапу. У ньому написано «конкуренти дорогі», «аудиторія велика», «люди готові платити».

Сьогодні кожне з цих речень перетворюється на число, яке можна перевірити. Числа складуться у файл data/market.csv. З нього на наступному уроці виростуть діаграми й розрахунок прибутку.

Головна думка уроку Дані не бувають «правильні» або «неправильні» самі по собі. Вони бувають придатні для висновку або ні. Придатність робиться руками: почистити, записати кожне рішення, підписати джерело. Тільки після цього число можна ставити в презентацію.

Після уроку ти вмієш

Слова «репрезентативність», «викид» і XLOOKUP поки нічого не означають — розберемо кожне тоді, коли воно знадобиться.

Хід уроку

ЕтапХвЩо робимо
Звідки беруться дані12чотири джерела, «я спитав трьох друзів» під мікроскопом
Репрезентативність18схема зміщення вибірки, таблиця похибки за кількістю відповідей
Брудна таблиця15дублікати, пропуски, викиди, різні написання; журнал рішень
Середнє проти медіани12дві шкали, один викид, два різні висновки
Формули і знак $18шість функцій, які реально потрібні; тренажер формул на цій сторінці
Джерело кожного числа10колонка source, файл market-sources.csv
Аудит свого датасету15вставляєш свій CSV — сторінка показує все, що з ним не так
Практика: market.csv15чистка, формули, експорт, FTP
Автоперевірка й підсумок5check11 3, латання червоних пунктів
Що робиться де Таблицю чистиш і рахуєш у себе — у Google Sheets або в редакторі на своїй машині. На сервер по FTP їде єдиний легкий текстовий файл: data/market.csv на кілька кілобайт. Скриншоти таблиці, чернетки й експорти в .xlsx на сервер не завантажуються — учитель дивиться саму таблицю очно, на твоєму екрані.
Крок 2

Звідки беруться дані для стартапу

Чотири джерела. Кожне відповідає на своє питання і бреше по-своєму.

У брифі з уроку 2 є речення на кшталт «підлітки готові платити за це 150 гривень». Поки за ним нічого немає, це побажання. Дані — це спосіб перетворити побажання на твердження, яке можна спростувати.

ДжерелоНа що відповідаєЧого варте
Власне опитування чи є проблема, скільки готові платити, чим користуються зараз єдине джерело, де ти питаєш саме про свій продукт; але описує рівно тих, кого опитав
Відкриті джерела
Держстат, data.gov.ua, відкриті звіти компаній
скільки людей, якого віку, у якому регіоні, скільки заробляють велика вибірка й описана методологія; але це вже минулий рік і не про твій продукт
Спостереження що люди роблять насправді, а не що кажуть ловить розрив між словами й діями; але мала кількість і твоя інтерпретація
Аналіз конкурентів які ціни на ринку вже платять, які пакети існують ціни публічні й перевіряються; але прайс на сайті ≠ реальний чек

«Я спитав трьох друзів» — чому це не дослідження

Спитай трьох людей. «Так» скажуть нуль, один, двоє або всі троє — інших варіантів просто немає. У відсотках це чотири числа: 0 %, 33 %, 67 % і 100 %. Між ними порожньо: значення 45 % три відповіді дати не можуть.

Припустимо, ти отримав 67 %. Скільки людей за межами цієї трійки сказали б «так» — 20 зі ста чи 90 зі ста? Обидва варіанти однаково можливі. Три відповіді не звужують здогадку взагалі.

Смугу, у якій може лежати справжнє значення, називають інтервалом довіри. Тут вона розтягнута на всю шкалу від 0 до 100 %. Рахувати таку смугу ми навчимося на наступному кроці.

Друга біда трьох друзів — вони твої друзі. Вони знають, що ти робиш проєкт, і хочуть, щоб ти не засмутився. Питання «ти б платив 150 грн?» отримує «ну, мабуть» від людини, яка ніколи цього не зробить. Тому в опитуваннях питають про минуле («скільки ти витратив на це за останній місяць»), а не про майбутнє.

Питання

Ти питаєш у своєму класі: «Ви б платили 150 грн на місяць за такий застосунок?» 24 з 26 кажуть «так». Що робити з числом 92 %?

Питання

Для розділу «обсяг ринку» тобі потрібне число: скільки людей 14–17 років живе у твоєму місті. Звідки взяти?

Крок 3

Кого насправді описує твоє опитування

Кількість відповідей і спосіб їх зібрати — це дві різні речі, і лікуються вони по-різному.

Ти виклав форму опитування в сторіс і зібрав 18 відповідей. Головне питання не в тому, скільки їх. Головне питання — хто взагалі міг на цю форму натрапити.

Сторіс бачать твої підписники. Це переважно люди твого віку, з твоєї школи, з твого району. Однокласниця із сусіднього мікрорайону, яка на тебе не підписана, форми не побачила жодного разу. Вона не відмовилася відповідати — у неї не було такої можливості.

Схема нижче показує це на сотні умовних людей.

Зміщення вибірки: кого хотіли описати і хто насправді відповівКого ти хотів описатиусі підлітки 14–17 у місті — 100 умовних людейХто насправді відповів18 відповідей із твоїх сторісГРУПАУ МІСТІУ ВИБІРЦІРІЗНИЦЯЄ кишенькові гроші, активні в сторіс30 %83 %+53 в. п.Є гроші, сторіс майже не дивляться20 %17 %-3 в. п.Кишенькових грошей майже немає35 %0 %-35 в. п.Інша школа, інший район міста15 %0 %-15 в. п.Половину міста опитування не побачило взагалі. Ще 400 відповідей із тих самих сторісне додадуть жодної людини з двох нижніх груп — похибка від кількості, зміщення від способу відбору.
Ліворуч — група, про яку ти збираєшся зробити висновок. Праворуч ті самі сто людей, але кольором залиті лише ті, хто побачив форму й відповів. Дві нижні групи не мали шансу потрапити у вибірку взагалі — це і є зміщення, і кількістю відповідей воно не лікується.

У правому стовпчику схеми стоїть скорочення в. п. Це відсоткові пункти. Ними міряють різницю між двома відсотками.

Дивись на верхній рядок. У місті таких підлітків 30 %, у твоїй вибірці — 83 %. Різниця між ними — 53 відсоткові пункти, скорочено 53 в. п.

Чому не «на 53 %»? Бо «на 53 %» означало б зростання від 30 % до 46 %. Це зовсім інше число. Різницю двох відсотків завжди рахують у пунктах — інакше читач не зрозуміє, про що йдеться. Далі на цій сторінці в. п. стоїть у кожній таблиці похибки.

Тепер про саму схему. Те, що ти на ній побачив, має назву. Вибірку звуть репрезентативною, якщо кожна людина з групи, про яку ти робиш висновок, мала шанс у неї потрапити. Не «однаковий шанс» у побутовому сенсі — просто ненульовий і відомий.

Дві нижні групи на схемі мали шанс рівно нуль. Тому ця вибірка не репрезентативна: вона зміщена. Слово робоче, воно трапиться сьогодні ще не раз.

І найважливіше про зміщення: кількістю воно не лікується. Ще чотириста відповідей із тих самих сторіс не додадуть жодної людини з двох нижніх груп.

Зміщення на побутових прикладах

Як зібралиКого не спиталиУ який бік бреше
Форма в сторіс твого акаунтатих, хто на тебе не підписанийтвоє коло однакове з тобою: смаки, гроші, район
Опитування на перерві біля кабінету інформатикитих, хто туди не ходитьзавищує інтерес до всього технічного
Відгуки на сторінці товаруусіх, кого товар не зачепивлишаються дуже задоволені й дуже злі, середина мовчить
«Хто хоче — заповніть форму»тих, кому байдужевідповідають фанати теми, а платять зазвичай не вони
Опитування вранці в буднє в торговому центрітих, хто в цей час на роботі й у школізсув за віком і зайнятістю, а не за думкою

Скільки відповідей потрібно, щоб числу можна було вірити

Тут працює правило, яке зазвичай дивує. Похибка не залежить ані від розміру міста, ані від розміру країни. Тільки від кількості відповідей. Тисяча опитаних дає однакову точність і для Ніжина, і для всієї України.

Рахують її однією формулою: похибка = 1,96 · √(0,25 / n). Тут n — скільки людей відповіли. Підстав своє n — отримаєш свій рядок таблиці нижче.

У таблиці показано найгірший випадок. Це коли думки розділилися приблизно навпіл, 50 на 50: саме тоді похибка найбільша. Її беруть із запасом, щоб не пообіцяти більше, ніж дані витримають.

Ще один підпис до таблиці — рівень довіри 95 %. Означає він ось що. Повтори те саме опитування сто разів із новими людьми — і приблизно у 95 випадках зі ста справжнє значення потрапить у показану смугу. У решті п’яти не потрапить. Стовідсоткової гарантії опитування не дає ніколи.

ВідповідейПохибкаЩо це означає для «62 % — за»
3±57 в. п.інтервал ширший за шкалу — числа немає
10±31 в. п.десь між 31 % і 93 %
30±18 в. п.десь між 44 % і 80 %
100±9,8 в. п.десь між 52 % і 72 % — уже видно, що більшість
400±4,9 в. п.між 57 % і 67 %
1000±3,1 в. п.між 59 % і 65 %
2000±2,2 в. п.стільки бере КМІС для всеукраїнських опитувань
Перевір таблицю сам Постав у формулу n = 100: √(0,25 / 100) = 0,05, помножити на 1,96 — вийде 0,098, тобто ±9,8 в. п. Постав n = 400 — вийде ±4,9 в. п. Це рівно ті числа, що в таблиці. Для вибірки на 2000 людей КМІС обіцяє похибку не більшу за 2,4 %. Це та сама формула плюс невеликий запас: жива вибірка ніколи не буває ідеальною. У класі реально зібрати 60–120 відповідей. Це нормальний навчальний рівень. Але поруч із числом завжди пишуть, скільки людей і кого саме питали.
Пастка Похибка лікується кількістю. Зміщення кількістю не лікується: 4000 відповідей із тих самих сторіс дадуть точний опис твоїх підписників — і нічого про місто.
Питання

Опитування ти зробив через форму в сторіс власного акаунта і зібрав 400 відповідей. Що з ним головне не так?

Питання

Ти зібрав 100 відповідей, 62 % кажуть «готовий платити». Як коректно записати цей результат у бриф?

Крок 4

Чистка даних для аналізу

Чотири типові біди — і чому кожна ламає саме той висновок, який ти хочеш зробити.

Файл market-raw.csv, який ти сьогодні отримав, зібраний як справжній: щось із форми, щось із сайтів конкурентів, щось дописане вручну. Тому в ньому є все, що буває в живих даних.

Жодна з бід нижче не оголошує про себе. Файл відкриється, формули порахують, червоних помилок не буде. Просто числа вийдуть не ті.

Тому чистка — це не прибирання заради краси. Це умова, без якої висновок не має сили.

Та сама таблиця до і після чисткиДо чистки: 6 рядківНАЗВАСЕГМЕНТЦІНАSOURCEРозмовний клубшколярі180опитуваннярозмовний клуб школярі180опитуванняМовна школа №1Школярі320SpeakEasyстудентисайтОнлайн-курсШКОЛЯРІ150прайсРепетиторбатьки4500оцінкарядок 2 — дублікат рядка 1: той самий клуб, у кінці невидимий пробіл«школярі», «Школярі», «ШКОЛЯРІ» — одне значення в трьох написанняхпорожня ціна і порожній source: рахувати по цих рядках не можна4500 грн — це індивідуальний репетитор, інша категорія послугиПісля чистки: 4 рядки, кожне рішення записане в журналНАЗВАСЕГМЕНТЦІНАSOURCEРозмовний клубшколярі180опитування 09.26Мовна школа №1школярі320прайс на сайтіОнлайн-курсшколярі150прайс на сайтіРепетитор *батьки4500оцінка* рядок лишили в таблиці, але позначили «інша категорія» — у середню ціну сегмента він не входить.
Ті самі шість рядків до і після чистки. Червоним позначено те, що робить рядок непридатним для розрахунку, жовтим — те, що вимагає рішення людини. Рівно це шукає аудитор датасету наприкінці уроку.
БідаЯк виглядаєЯкий висновок ламає
Дублікати той самий конкурент двічі; одна людина заповнила форму тричі завищує кількість і тягне середнє в бік значення, що продублювалося
Пропуски порожня ціна, порожній сегмент, порожній source AVERAGE просто пропустить рядок, а COUNT — ні: доля рахуватиметься від різних знаменників
Викиди 4500 грн серед цін 150–320 одне значення зсуває середнє на сотні гривень і робить твою ціну «дешевою»
Різні написання «школярі», «Школярі», «ШКОЛЯРІ», « школярі» COUNTIF бачить чотири різні сегменти замість одного
Числа-текст « 200 », 150 грн, 1,5 замість 1.5 агрегатні функції мовчки ігнорують такі клітинки — сума менша, і ніде не видно чому

Останній рядок таблиці вартий окремої зупинки. Числа-текст — найпідступніша з п’яти бід, бо вона нічого не ламає видимо.

Клітинка з написом 150 грн для тебе число. Для таблиці це слово: у ньому є літери. AVERAGE таке слово мовчки пропустить — ні помилки, ні попередження.

Ти побачиш красиве середнє, пораховане не по всіх рядках, а тільки по тих, які програма визнала числами. І не дізнаєшся про це ніколи, поки хтось не перерахує вручну.

Перевіряється це за секунду. Числа притискаються до правого краю клітинки, текст — до лівого. Якщо в колонці цін частина значень стоїть ліворуч, це не числа.

Порядок дій, який працює

  1. Зроби копію аркуша й назви її raw. Чистиш на копії — сирі дані має бути з чим звірити.
  2. TRIM по всіх текстових колонках: невидимі пробіли з кінця псують і порівняння, і COUNTIF, і автоперевірку.
  3. Приведи написання до одного вигляду (LOWER або ручний довідник значень).
  4. Прибери дублікати — і полічи, скільки їх було.
  5. Розберися з пропусками: знайшов значення — дописав із джерелом, не знайшов — рядок геть.
  6. Розглянь викиди поштучно. Викид — це не «велике число», це число, яке з іншої історії.
Викид — не завжди помилка 4500 грн у списку мовних курсів — це не описка. Це індивідуальний репетитор: інша послуга, інший спосіб продажу. Правильна дія — не видалити мовчки, а винести в окрему категорію й записати рішення. Видалене мовчки число повернеться на Demo Day у вигляді питання «а чому у вас ринок такий дешевий?».
Питання

Ти написав =COUNTIF(B2:B60;"школярі") і отримав 3. Поруч =COUNTIF(B2:B60;"Школярі") дає 1, а "ШКОЛЯРІ" — ще 1. Твій висновок «школярів у вибірці троє» — правильний чи ні?

Крок 5

Журнал чистки: чому рішення треба записувати

Історія версій показує, що змінилося. Журнал відповідає на питання чому.

Кожна дія на попередньому кроці зменшує таблицю. Через тиждень ти дивишся на 96 рядків і не пам’ятаєш, звідки бралися 120. А на Demo Day питання «чому ви викинули четверту частину даних» звучить обов’язково — і відповідь «здалося зайвим» коштує дорого.

Воронка чистки: скільки рядків залишилось і чомуКожен зріз воронки — один запис у журналі120 рядківсирих рядків у market-raw.csv106 рядківпісля видалення дублікатів2026-09-15 · знято 14 дублів: TRIM + однакові name і segment97 рядківпісля рядків без джерела2026-09-15 · знято 9 рядків: source порожній, перевірити нічим96 рядківпісля розбору викидів2026-09-15 · 4500 грн → мітка «інша категорія», у середнє не входитьБез журналу за тиждень ніхто — навіть ти — не пояснить, чому рядків 96, а не 120.
Числа у воронці — приклад для датасету зі 120 рядків; у тебе будуть свої. Важлива не арифметика, а те, що кожен зріз має підпис із причиною, і за цим підписом чистку можна повторити з нуля.

Формат запису

Журнал — це аркуш log у твоїй таблиці або розділ у CHANGELOG.md. Один рядок — одне рішення, чотири поля:

ДатаЩо зробивРядківЧому
2026-09-15TRIM по колонках name і segment120пробіли в кінці ламали COUNTIF
2026-09-15звів написання сегментів до нижнього регістру120«школярі» і «Школярі» рахувалися окремо
2026-09-15видалив дублікати за парою name + segment−14ті самі курси з двох сайтів
2026-09-15видалив рядки з порожнім source−9ціну не було де перевірити
2026-09-154500 грн → мітка «інша категорія»96індивідуальний репетитор, не груповий курс
Правило Якщо ти не можеш записати причину одним реченням — ти не знаєш, що робиш. Це найкращий фільтр проти «почищу, щоб красивіше виглядало».
Питання

Ти видалив 14 рядків без джерела й нікому не сказав. За тиждень середня ціна в таблиці не збігається з тією, що на слайді пітчу. Що тебе рятує?

Крок 6

Медіана і середнє: яке число брати для цін

Для цін, доходів і чеків майже завжди беруть медіану. І це не питання смаку.

Середнє ділить суму на кількість: кожне значення тягне на себе. Медіана — це значення посередині відсортованого ряду: половина менша, половина більша. Одне велике число зсуває середнє на скільки завгодно, а медіану — щонайбільше на один крок ряду.

Як один викид тягне середнє і майже не чіпає медіануП’ять цін конкурентів, грн02004006008001000середнє 315медіана 190Ті самі ціни без одного значення 90002004006008001000середнє 168.75медіана 165
Ціни з тренажера формул: 85, 140, 190, 260 і 900 грн. Червона риска — середнє, зелена — медіана. Приберемо одне значення з п’яти — середнє падає на 146 гривень, медіана зсувається на 25.

У прикладі вище викид 900 грн підняв середнє з 169 до 315 гривень — на 146 гривень. Медіана зрушила зі 165 до 190, тобто на 25. Якщо ти ставиш ціну «трохи нижче за середню по ринку», то з першим числом це 300 грн, а з другим — 180. Це два різні продукти.

ПоказникКоли доречнийКоли бреше
AVERAGE однорідні дані без хвоста: зріст, оцінки, час уроку ціни, доходи, кількість переглядів — там завжди є довгий хвіст угору
MEDIAN ціни конкурентів, зарплати, чеки, час відповіді коли значень менше 5 — медіана просто вкаже на одне з них
обидва разом завжди, коли робиш висновок про ринок
Це не шкільна вигадка Держстат публікує і середню, і медіанну зарплату саме тому, що вони різні. Середню піднімає невелика кількість дуже високих зарплат. Медіана показує людину «посередині». Коли в новинах пишуть про середню зарплату, а в коментарях пишуть «у мене такої немає» — праві обидва: це різні показники.

Робоче правило. Порахуй обидва числа. Якщо вони відрізняються більш ніж на чверть — у даних сидить викид.

Тоді в текст ідуть обидва. Наприклад так: «медіанна ціна 180 грн, середня 315 — середню тягне один репетитор за 900».

Питання

Середня ціна конкурентів — 340 грн, медіана — 120 грн. Що це означає для твоєї ціни?

Питання

У списку конкурентів є один за 4500 грн — це індивідуальний репетитор, а не групові курси. Що з цим рядком робити?

Крок 7

Формули, які реально потрібні

Шість функцій закривають майже всю аналітику стартапу на цьому етапі.

ФункціяПитання, на яке відповідаєПриклад
SUMскільки всього =SUM(B2:B6) — скільки людей опитано разом
AVERAGEскільки в середньому =AVERAGE(D2:D6) — середній чек по ринку
MEDIANскільки в типового =MEDIAN(D2:D6) — ціна «посередині» ринку
COUNTIFскільки таких, що… =COUNTIF(D2:D6;">200") — скільки конкурентів дорожчі за 200
IFвіднести до групи за умовою =IF(C2/B2>0,3;"цільовий";"ні") — сегмент цільовий чи ні
XLOOKUPпідтягнути значення з іншої таблиці за ключем =XLOOKUP(A2;'сегменти'!A:A;'сегменти'!B:B;"немає")
Роздільник аргументів В україномовному інтерфейсі Google Sheets і Excel аргументи розділяються крапкою з комою: COUNTIF(D2:D6;">200"). В англомовному — комою. Це та сама функція, а не дві різні. Тренажер нижче розуміє обидва варіанти.

XLOOKUP і що робити з помилкою

Уяви два аркуші. На першому — список конкурентів, і в кожного стоїть код сегмента: shkolyari, studenty. На другому — довідник: який код що означає.

Переписувати назви руками ти не будеш: рядків шістдесят, і на третьому десятку почнуться описки. XLOOKUP робить це сам. Він бере код із першого аркуша, знаходить його в довіднику й повертає назву з сусідньої колонки.

Тепер про четвертий аргумент. Коду може не знайтися — ти помилився в написанні або довідник неповний. Що показати в такому разі, вирішуєш ти: =XLOOKUP(A2;E:E;F:F;"немає у довіднику"). Текст у дужках наприкінці і є той четвертий аргумент.

Без нього в клітинці з’явиться #N/A. Так таблиця каже «не знайшла». Один #N/A ще читається, а колонка з двадцяти таких лякає і ховає за собою все інше.

Тут багато хто хапається за IFERROR: він замінює будь-яку помилку на що завгодно, хоч на порожнечу. Спокуса зрозуміла, наслідок поганий. IFERROR глушить усі помилки одразу — і ділення на нуль, і зіпсоване посилання теж.

Таблиця після цього виглядає чистою, а рахує неправильно. Четвертий аргумент XLOOKUP прибирає рівно один випадок, «не знайшлося», і лишає решту помилок на видноті.

Знак $: найчастіша помилка при копіюванні

Візьми клітинку з формулою, схопи її за правий нижній кут і потягни вниз. Це і зветься «протягнути формулу»: таблиця сама заповнить усю колонку.

При цьому кожне посилання у формулі зсувається на стільки ж рядків. Був =C2-D2 — у наступному рядку стане =C3-D3. Зазвичай саме це й потрібно: кожен рядок має рахуватися по своїх даних.

Біда починається, коли у формулі є посилання на одну спільну для всіх клітинку. Курс валюти, комісія, постійні витрати — таке значення лежить в одному місці, і адреса в нього мінятися не повинна.

Але вона поїде разом з усіма. Було B8 з комісією — у другому рядку стане B9, у третьому B10. А там порожньо. Множення на порожню клітинку дає нуль.

Лікується це двома символами. Постав долар перед буквою й перед цифрою — $B$8 — і адреса примерзне на місці. Долар означає рівно одне: «цю частину адреси при копіюванні не чіпай».

Відносне посилання їде разом із формулою, абсолютне стоїть на місціБез $ — посилання їде внизD — ЧЕКE — ТВОЯ ФОРМУЛА285=D2*B8 → 15,33140=D3*B9 → 04260=D4*B10 → 08B8 = 0,18комісія платформиB9 і B10 порожні → множення на нуль → нулі в усій колонці.З $ — посилання прибите цвяхомD — ЧЕКE — ТВОЯ ФОРМУЛА285=D2*$B$8 → 15,33140=D3*$B$8 → 25,24260=D4*$B$8 → 46,88B8 = 0,18комісія платформи$B$8 не рухається: усі рядки беруть ту саму комісію.$ перед буквою фіксує колонку, $ перед цифрою — рядок.B8 — їде і вниз, і вбік · $B8 — не їде вбік · B$8 — не їде вниз · $B$8 — стоїть завждиПравило: усе, що в таблиці одне на всіх — комісія, курс, постійні витрати, — пишеться з двома $.
Ліва колонка ламається вже на другому рядку. Це можна перевірити прямо на цій сторінці: у тренажері нижче введи =D2*B8, натисни «скопіювати формулу вниз» і подивись, що опинилося в E3.
Симптом, за яким це видно Перший рядок колонки порахований правильно, а всі наступні — нулі або #DIV/0!. Не шукай помилку в даних: клацни в другу клітинку колонки й подивись, на що вона насправді посилається.
Питання

У E2 формула =D2*B8, де в B8 лежить комісія 0,18. Ти протягнув її до E6 — і в E3:E6 нулі. Чому?

Питання

Поруч із кожним конкурентом треба підтягнути назву його сегмента з другого аркуша за кодом сегмента. Яка функція?

Крок 8

Тренажер формул

Справжній обчислювач: пишеш формулу — сторінка рахує її по цій таблиці й показує помилки так само, як показала б Google Sheets.

Дані внизу — приклад для тренування, не твій ринок. Колонка D навмисно містить один дорогий рядок: подивись, що станеться з AVERAGE і MEDIAN.

Аркуш «конкуренти»
Натисни «Порахувати».

Тренажер розуміє числа, посилання A1 і $A$1, діапазони A1:B6. Розуміє дії + − * / ^ і порівняння > < >= <= = <>. Розуміє текст у лапках.
Функції: SUM, AVERAGE, MEDIAN, COUNT, COUNTA, COUNTIF, SUMIF, AVERAGEIF, MIN, MAX, IF, IFERROR, ROUND, ABS, CEILING.

Три помилки, які ти сьогодні побачиш навмисно #DIV/0! — ділення на нуль або на порожню клітинку. #VALUE! — арифметика над текстом; спробуй =A2*2. #NAME? — функції з такою назвою не існує; спробуй =AVERGE(D2:D6). Помилка в клітинці — не поломка таблиці, а повідомлення. Читати його швидше, ніж переписувати формулу навмання.
Крок 9

Джерело кожного числа

Колонка source — не бюрократія. Це те, що відрізняє аналітику від вигадування.

Правило модуля просте: число без джерела не йде в презентацію. Не тому, що так суворо, а тому, що на Demo Day перше питання після будь-якої цифри — «звідки вона». Якщо відповідь «здається, десь бачив», далі можна не продовжувати: разом із числом сумнівною стає вся решта роботи.

Робочий аркуш із колонкою source і два файли, що з нього виходятьРобочий аркуш у таблиці — 7 колонокSEGMENTUSERSPRICEVAR_COSTMARGINBREAK_EVENSOURCEshkolyari120015040=C2-D2=CEILING($H$1/E2)опитування n=112studenty80024055=C3-D3=CEILING($H$1/E3)прайси 4 сайтівbatky45029070=C4-D4=CEILING($H$1/E4)Держстат, 14–17 р.margin і break_even_units — формули, а не набрані числа. Постійні витрати лежать в H1 і всюди беруться як $H$1.data/market.csv — рівно 6 колоноксаме цей заголовок звіряє check11 3segment,users,price,variable_cost,margin,break_even_unitsshkolyari,1200,150,40,110,37studenty,800,240,55,185,22data/market-sources.csvзвідки взялося кожне числоsegment,field,source,dateshkolyari,price,опитування n=112,2026-09-15shkolyari,users,Держстат,2026-01-01Число, якого немає в правому файлі, не має права потрапити ані в analytics.html, ані на слайд пітчу.
У робочому аркуші джерело є в кожного рядка. На сервер їдуть два файли: market.csv рівно з шістьма колонками — для автоперевірки, і market-sources.csv — для людини, яка спитає «звідки».

На схемі видно розподіл праці між двома файлами. Розберемо, навіщо їх саме два.

Автоперевірка читає market.csv посимвольно й чекає рівно шість колонок. Колонка source була б сьомою — вона туди не вміщається.

Викинути джерела зовсім теж не можна. Тоді зникає єдине, чим ти підтвердиш будь-яке число зі своєї таблиці.

Тому джерела живуть окремо, у market-sources.csv. Один рядок цього файлу — одне число з таблиці: який сегмент, яке поле, звідки взято, якою датою. Автоперевірка цього файлу не вимагає. Учитель на Demo Day спитає саме про нього.

Що писати в source

ПоганоДобреЧому
інтернетпрайс speakeasy.example, 2026-09-14можна відкрити й перевірити
опитуваннявласне опитування 09.2026, n=112, 9 класи школивидно, скільки людей і кого саме
ДержстатДержстат, населення за віком, регіон, дані 2024видно рік — читач одразу бачить, наскільки число свіже
приблизнооцінка: 30 % від числа Х, припущення таке-тооцінка теж має право бути, якщо чесно названа оцінкою

Спільне в правій колонці одне: за таким записом число можна знайти вдруге. Є адреса сайту й дата — відкрив і звірив. Є кількість опитаних і хто вони — видно, чого вартий відсоток. Є рік у статистиці — видно, наскільки число застаріле.

Слово «оцінка» в цьому списку не соромне. Соромно видавати оцінку за виміряне число. Напиши прямо: «оцінка: 30 % від числа Х» — і претензій не буде.

Чому source не потрапляє в market.csv Автоперевірка check11 3 звіряє заголовок market.csv посимвольно: там рівно шість колонок і жодної зайвої. Тому в робочому аркуші колонка source є завжди. А на сервер їдуть два файли. data/market.csv — для перевірки й розрахунків. data/market-sources.csv — для людини, яка спитає «звідки». Другий файл автоперевірка не вимагає, але на Demo Day він і рятує.
Питання

На слайді пітчу написано «Ринок — 12 млн грн на рік». Учитель питає: звідки це число. Яка відповідь найсильніша?

Крок 10

Перевір свою таблицю прямо на цій сторінці

Встав свій CSV — сторінка знайде те саме, що шукав би вчитель, і покаже, як від кожного виправлення поїдуть середнє й медіана.

Правила ми розібрали. Тепер найшвидший спосіб побачити, що з твоєю таблицею не так, — показати її сторінці.

У полі вже лежить навчальний брудний приклад. Натисни «Перевірити» й подивись на список.

Далі вставляй свій файл — той самий, з якого робиш market.csv. Дані нікуди не надсилаються: увесь розбір відбувається у твоєму браузері.

Аудит CSV

Перший рядок — заголовок. Роздільник визначається сам (кома або крапка з комою). Числову колонку для середнього й медіани можна вибрати нижче.

Що робить правило 1,5 × IQR Аудитор сортує числа й бере дві межі: чверть значень нижче першої і чверть вище другої. Відстань між цими межами зветься міжквартильним розмахом. Підозрілим аудитор позначає все, що далі ніж півтора розмахи від меж. Це спосіб звернути увагу, а не команда видаляти. Рішення по кожному підозрілому рядку ухвалюєш ти, і воно йде в журнал.
Питання

Твій market.csv готовий, але margin ти вписав руками — швидше було порахувати в голові. Що станеться?

Крок 11

Практика: data/market.csv

Виконуй по черзі. Галочки зберігаються — сторінку можна закрити.

Що робиться локально, що їде по FTP Чистка, формули й експорт — у себе: у Google Sheets або в редакторі на своїй машині. По FTP у ~/upload/, а звідти в ~/www/data/ їдуть тільки market.csv і market-sources.csv — два текстові файли на кілька кілобайт. Сама таблиця, скриншоти і .xlsx на сервер не завантажуються.
Три пастки експорту, на яких падає автоперевірка 1. Роздільник. В українській локалі Excel зберігає CSV із крапкою з комою і десятковою комою: shkolyari;150,5. Парсер уроку чекає shkolyari,150.5. Обирай «Формат CSV (розділений комами)» і заміни десяткові коми на крапки до експорту.
2. BOM. «CSV UTF-8» в Excel дописує на початок файлу три невидимі байти. Заголовок стає segment, і посимвольна звірка падає з повідомленням, у якому все виглядає правильно. Google Sheets → «Завантажити → CSV» BOM не додає; якщо файл усе-таки з BOM, перезбережи його в редакторі як «UTF-8 без BOM».
3. PowerShell. Якщо формуєш файл командою, > market.csv у Windows PowerShell 5.1 дає UTF-16 — парсер такий файл не прочитає взагалі. Пиши | Out-File -Encoding ascii market.csv, а для кирилиці в market-sources.csv[IO.File]::WriteAllText($p,$t,(New-Object Text.UTF8Encoding $false)).

Як має виглядати результат

data/market.csv
segment,users,price,variable_cost,margin,break_even_units shkolyari,1200,150,40,110,37 studenty,800,240,55,185,22 batky,450,290,70,220,19 vchyteli,300,190,45,145,28 repetytory,180,900,260,640,7

Приклад заповнення: числа тут ілюстративні, у тебе будуть свої. Постійні витрати в цьому прикладі — 4000 грн/міс, тому break_even_units = CEILING(4000 / margin): 4000/110 = 36,4 → 37.

Крок 12

Автоперевірка check11 3

Перша частина теми 3. Друга частина (analytics.html) — на уроці 4. Спроби не обмежені.

Демонстраційний режим: результат згенеровано для показу. На сервері ця кнопка викликає check11 3, який парсить твій CSV модулем csv, звіряє заголовок і перераховує margin для кожного рядка.

Чому «майже правильно» тут не спрацьовує Критерій margin_calc перевіряє abs(margin − (price − variable_cost)) < 0,01 у кожному рядку. Якщо хоч один margin вписаний руками й відстав від зміненої ціни, пункт лишиться червоним і роботу поки не приймуть. Спроби не обмежені: заміни число формулою й натисни перевірку ще раз. Це не прискіпливість. Рівно так само на уроці 4 зламається break_even_units, а на Demo Day — цифра на слайді.

Що вчитель дивиться на екрані

Крок 13

Шкала виконання

Це те, що бачить учитель, коли виставляє оцінку.

СкладникВагаРезультат
Виконано
0%
Рекомендований бал за 12-бальною

Сім пасток цього уроку

  1. Показники вписані руками замість формул — при зміні ціни нічого не перераховується.
  2. Забутий $: перший рядок правильний, решта колонки — нулі.
  3. Експорт із локаллю, де роздільник ;, а десятковий — кома.
  4. BOM на початку файлу: заголовок виглядає правильним, а звірка падає.
  5. Пробіл у кінці значення сегмента — COUNTIF рахує окремо, автоперевірка бачить дублікат.
  6. Викид видалений мовчки — і на Demo Day нема чим пояснити, чому ринок «дешевий».
  7. Середнє замість медіани в описі цін — і ціна продукту вибудувана навколо одного дорогого конкурента.

Домашнє завдання

  1. Довести market.csv до стану, коли всі пункти автоперевірки зелені.
  2. Дописати в CHANGELOG.md датований запис із журналом чистки: скільки рядків було, скільки лишилося, три головні рішення й причина кожного.
  3. Додати data/market-sources.csv: для кожного числа з market.csv — рядок «сегмент, поле, джерело, дата».
  4. Порахувати для колонки цін і середнє, і медіану. Якщо вони відрізняються більш ніж на чверть — знайти, який саме рядок це робить, і написати про нього одне речення.
Анонс уроку 4 З цього ж market.csv будуємо зведену таблицю «сегмент × канал». Далі підбираємо діаграму під питання — і вчимося ловити діаграми з обрізаною віссю, які брешуть картинкою. Потім рахуємо маржу й точку беззбитковості. Наприкінці публікуємо analytics.html із діаграмою просто в коді сторінки й трьома висновками. У кожному висновку — число з твоєї таблиці.
Джерела

Звідки взяті факти

Усе, що можна перевірити, — з документації, стандартів і опублікованих методологій. Перевіряти дозволено й корисно.

Повний список із поясненнями, що саме взято з кожного джерела, — у файлі urok-03-джерела.md поруч із цією сторінкою. Назви компаній, ціни конкурентів і числа опитувань тут — навчальний приклад, складений автором уроку. Перевіряються тільки формули й методи, а не самі числа.