Деление в Excel двух чисел и работа над ошибками при вводе данных
Предположим, мы – программисты. Почему бы не предположить такое? Нам дали задание написать программу, которая выполняет деление в Excel чисел.
Содержание:
1. Как осуществляется ввод данных в ячейки Excel
2. Деление в Excel чисел, чтобы A разделить на B
3. Есть ли критические значения в программном коде
4. Об ошибке деления на ноль
5. Ввод буквы вместо цифры — это ошибка?
6. Видео: Деление в Excel двух чисел и ошибки при вводе данных
7. Какие могут быть ошибки при вводе данных
8. Исправление ошибок
9. Функция «ТИП» и проверка типов вводимых данных
10. Итоговая проверка правильности ввода данных
11. Функция «Если» и изменение формулы для деления в Excel
12. Какие можно выводить сообщения об ошибках при вводе данных
13. О роли программистов в кодировании
Деление в Excel чисел: пишем маленькую программу
Наша программа должна быть предназначена для выполнения следующих действий:
- пользователь (не мы сами, а какой-то «посторонний человек») вводит две цифры A и B;
- цифры могут быть любыми, положительными, отрицательными, нулевыми, огромными как в плюс, так и в минус. Ограничений на величину вводимых цифр нет;
- программа, написанная нами, программистами, должна выдать ответ в виде частного от деления A на B;
- сделать программу нужно в табличном редакторе Microsoft Excel, который позволяет программировать (кодировать) с помощью формул в ячейках таблиц.
Фактически, суть задания – деление в Excel чисел, чтобы получить частное от деления двух чисел друг на друга. Результат деления давайте назовем буквой C. То есть, нам надо запрограммировать довольно простую формулу:
C = A / B
Программируем ввод данных в ячейки Excel
Итак, мы как программисты беремся за дело. Открываем пустую книгу Excel, и видим ряд ячеек, которые пока не заполнены никем (рис. 1). Ячейки ждут нас!
Мы будем первые, кто начнет заполнять ячейки таблицы цифрами, буквами и формулами. Договоримся (это наше право выбора, поскольку мы являемся программистами, и сами все решаем), что первое число A пользователь будет заносить в ячейку B2. Второе число будет заноситься в ячейку B3. Результат деления A на B должен быть записан в ячейку B4.
Выглядеть это может так, как показано на рисунке 2.
На рис. 2 имеются тексты «Введите A:», «Введите B:», «Итог A / B =». Эти тексты введены вручную в соответствующие ячейки A2, A3 иA4. Ячейки B2, B3, B4 дополнительно обведены в рамочку (для наглядности).
Теперь у нашего будущего пользователя пока еще не написанной нами программы (кода) появилась возможность ввести значения A и B в соответствующие ячейки. Допустим, пользователи захотят ввести A=4, B=2.
Мы как программисты, должны попробовать ввести данные за пользователей. Это обязательно. Ведь любую написанную или еще не написанную программу надо попытаться выполнить самому, прежде чем ее предлагать другим людям.
Итак, вводим число 4 в ячейку B2 и вводим число 2 в ячейку B3. Получим результат, как показано на рис. 3.
На этом пока всё. С вводом данных мы, вроде бы, разобрались – данные можно вводить. Первая часть нашего кода, нашей работы закончена. Будем переходить к вычислению частного от деления A на B.
Программируем деление в Excel чисел: A разделить на B
В редакторе таблиц Excel вычисления программируются с помощью формул. Вводить формулы можно прямо в ячейку, куда должен быть помещен результат вычисления. В нашем случае результат должен быть помещен в ячейку B4.
Вводить формулу можно в строку формул. Для этого наверху таблицы есть поле возле характерного значка — fx. На рис. 3 это поле подчеркнуто красной линией. Перед вводом формулы в данное поле, всё равно курсор нужно поместить в ячейку, где должен быть размещен итог вычислений – это ячейка B4.
Сама же формула вычисления достаточно проста. Она выглядит так:
=B2/B3
Написанная формула означает буквально следующее:
- знак «=» означает, что нужно выполнить вычисление – это своего рода команда табличному редактору Excel: «вычислить!» или «выполнить!».
- B2 означает, что делимое нужно взять из ячейки B
- Знак «/» обозначает операцию деления. Символ «/» — это знак деления в Excel.
- B3 означает, что делитель нужно взять из ячейки B
Итак, вводим формулу в ячейку B4 (рис. 4):
Чтобы в ячейке B4 появился итог вычислений, а не сама формула, нужно нажать на клавишу Enter (Ввод) после окончания ввода формулы. Тогда вместо формулы мы увидим результаты деления числа 4 на число 2, который равен 2 (рис. 5):
Для наглядности текст «Итог A / B =» в ячейке A4 выделим жирным шрифтом, так как это результат работы нашей программы (кода). Выделим жирным шрифтом результат, который выводится в ячейке B4. Ячейку B4 дополнительно закрасим желтым цветом – тоже для наглядности.
Вроде бы, мы завершили программирование согласно данному заданию. Но так ли это? Давайте посмотрим на результаты (рис. 5) более критически. Результат, конечно, есть. Но можно ли данную программу отдать другому человеку, чтобы он работал с ней?..
Проверка критических значений в программе
Что будет, если поменять значения в ячейках B2 и B3 нашей небольшой программы? Скажем, вместо 4 и 2 поставить 12 и 3.
Зачем менять значения? Дело в том, что мы пишем программу не для себя, а для других пользователей. Мы ведь программисты, вернее, мы представляем себя на месте программистов. Но ведь другой пользователь может ввести в B2 и B3 совсем другие числа.
Итак, пробуем наш код с числами 12 и 3. Получаем закономерный результат деления 12 на 3, равный 4 (рис. 6).
Получается, что мы написали хорошую работающую программу? И ее можно спокойно отдавать другим пользователям в работу? Ладно, а если пользователь введет еще другую пару чисел? Как проверить, что программа будет работать при любых значениях? Перебирать все возможные варианты? Но ведь их число – бесконечное!..
Об ошибке при делении на ноль в Excel
Конечно, не надо подставлять все возможные значения A и B в ячейки B2 и B3. Жизни не хватит, чтобы перепробовать все варианты. Нужно пробовать испытывать код на так называемых критических значениях. Что это такое? Это – нулевые, максимальные, минимальные значения или попросту ошибочные значения.
Для начала подставим ноль в ячейки B3 (рис. 7):
Получим… ошибку!!! Программа не работает! Почему? Потому что на ноль делить нельзя – это правило арифметики чуть ли не из начальной школы.
Можно ли оставить программу в таком виде? Пусть пользователь введет нули, или один ноль в ячейку B3, и тогда он увидит сообщение об ошибке. Но ведь тут «виноват» не программист, а сам пользователь – зачем вводить ноль в качестве делителя?!
Ошибочный ввод букв вместо цифр
Допустим, пользователь ввел 12 в ячейку A2. Но из-за плохого знания клавиатуры или просто из-за невнимательности, предположим, он введет вместо тройки в ячейку B3 русскую букву «З».
Буква «З» похожа на цифру «3». Получится уже другая ошибка – ошибка неправильного ввода значений в ячейки B2 или B3 (рис. 8):
Видео: Деление в Excel двух чисел и работа над ошибками при вводе данных
Другие возможные ошибочные варианты ввода данных
Можно привести множество других примеров неправильного ввода данных, в результате которых итоговый результат будет ошибочный или даже неправильный.
Например, в Excel можно иной раз вместо чисел ненароком ввести даты (числа, месяцы, годы). Внешне даты могут быть похожи на обычные цифры. Скажем, число 1.1 иной раз может быть интерпретировано как 1 января 1900 года. Такая дата автоматически преобразуется в странное число 44197 – это число дней, прошедших с какой-то древней даты.
Excel может использовать странное число 44197 вместо подставленного числа 1.1 при вычислениях, давая совершенно непредсказуемые результаты. Ведь 1.1 и 44197 – это совсем разные числа, не правда ли?
Тем не менее, программист должен предусмотреть все возможные варианты ошибок. Для каждого варианта ошибочного ввода ему следует разработать меры предупреждения. Это и будет так называемая работа над ошибками.
Работа над ошибками при вводе данных в Excel
С работы над возможными ошибками начинается то, что можно назвать «искусство программирования». Воспользоваться синтаксисом и семантикой языка программирования, принятого в редакторе Excel, не так уж сложно. Это показано выше и является всего лишь ремеслом: делай по инструкции, и получишь подобие результата.
А вот добиться того, чтобы программа работала верно при любых введенных значениях – это и есть искусство, которое требуется осваивать, порой, долгим и всегда упорным трудом. Покажем далее, как занимаются искусством программирования на нашем небольшом примере деления в Excel двух чисел одно на другое.
Приступим к устранению ошибки неправильного ввода букв вместо цифр в нашей программе. Это необходимо, чтобы программа работала только с верным результатом. Начнем с того, что проверим, что за значения вводит «дорогой наш» пользователь? Проверку выполним в соседних с B2 и B3 ячейках С2 и C3.
Функция ТИП для проверки типов данных, введенных пользователем
Что может ввести пользователь неправильно? Он может вместо чисел ввести в ячейки B2 и B3 не числовые значения. Проверить, что ввел пользователь, можно с помощью экселевской функции ТИП. Эта функция выдает значение 1, если в проверяемой ячейке записано число. Но если в проверяемую ячейку вводится не число, то функция даст другой результат, например, 2, 4, 16, 32 и тому подобное.
Начнем предупреждать возможные ошибки при вводе данных в Excel.
Введем в ячейку C2 формулу =ТИП(B2), а в ячейку C3 запишем формулу =ТИП(B3).
Формулы позволят нам пока визуально, глазами увидеть, ввел ли пользователь в ячейки B2 и B3 числа, или там введены какие-то другие значения (рис. 9):
Наглядно видим, что в ячейке B2 введено число, потому что результат выполнения функции =ТИП(B2) равен 1.
Но в ячейке B3 явно введено не число, так как результат выполнения функции =ТИП(B3) равен 2, а не 1. Вот тут-то и закралась ошибка ввода данных!
И как же теперь быть? Получается, что Excel по нашей формуле «честно» разделил 12 на непонятно что. Ведь буква З («зе») только внешне похожа на цифру 3 («три»), а на самом деле это совсем не цифра и не число.
Автоматическое определение правильности ввода данных пользователем
Как будем действовать дальше? Давайте сложим числа в ячейках C2 и C3. А результат поместим в ячейку C4, справа от выделенного желтым цветом итогового результата вычислений в B4. Получим, очевидно, итог равный 3 (рис. 10):
Получается, что мы, как программисты, можем выводить в ячейку B4, окрашенную желтым цветом, результат вычисления =B2/B3, только в том случае, если в ячейке C4 стоит значение 2.
У нас на рисунке 12 в С4 получилось другое значение — 3. А в ячейке В4 записано сообщение об ошибке #ЗНАЧ!. Это потому, что в ячейке B3 было введено неправильное число, что и привело к неверному ошибочному результату.
Функция «Если» для изменения формулы для деления в Excel
Выходит, что надо менять формулу в ячейке B4. Что там было записано? Деление B2 на B3, то есть там была формула =B2/B3. А что надо написать? Давайте попробуем разобраться:
- Мы можем в ячейку B4 записать формулу =B2/B3 только в том случае, если в ячейке C4 стоит число 2.
- Если же в ячейке C4 не стоит число 2, то в ячейке B4 нельзя выводить результат, поскольку он будет неверным и введет в заблуждение пользователя нашей программы (именно такой неверный результат мы видим на рис. 9)
Для таких сложных случаев в Excel есть функция ЕСЛИ. С помощью ЕСЛИ мы сможем разделить результат вычисления в ячейке B4 на 2 ветки:
- что делать, ЕСЛИ в C4 стоит число 2, и
- что делать, ЕСЛИ в C4 записано другое число.
Итак, записываем в ячейку B4 следующую формулу:
=ЕСЛИ(C4=2;B2/B2;”Ошибка”)
Кратко суть формулы, то есть, как она работает. Если в ячейке C4 стоит число 2, то результатом в B4 станет частное от деления B2 на B3. В любом другом случае в ячейке B4 появится текст «Ошибка» (без кавычек).
Давайте введем формулу в ячейку B4 и посмотрим на результат (рис. 11):
Теперь наглядно видно, что в результате ввода числа12 и буквы З («зе») вместо «тройки» 3, пользователь нашей программы НЕ получит частное от деления 12 на 3. Выйдет предупреждающее сообщение об ошибке – слово «Ошибка».
Выбор вариантов написания диагностических сообщений о неправильном вводе данных
Вместо слова «Ошибка» мы могли бы написать что-то другое в формуле в ячейке B4. Скажем, можно написать: «Проверьте правильность ввода данных в ячейки B2 и B3». Это уже дело вкуса и тех задач, которые стоят перед программистом.
Мы в данном примере ограничились сообщением «Ошибка» из-за лаконичности сообщения – коротко и ясно, что «Что-то пошло не так!».
Пользователь, увидев диагностическое сообщение, попытается исправить ошибку. Теперь он введет в ячейку B3 не букву З («зе»), а настоящую тройку 3. И тогда – пожалуйста, вот он, точный результат деления 12 на 3 (рис. 12):
Легко ли быть программистом
Примерно так, как описано в этой статье, программистам приходится работать над ВСЕМИ формулами (над мнемоническими программными кодами). Чтобы программа выдавала верные результаты при любом раскладе, при любых действиях пользователей. Иначе программа может выдать неверные результаты, вводящие в заблуждение, а это недопустимо.
Программы, программный код, как правило, весьма объемный. Это могут быть сотни тысяч ячеек с формулами. Формулы (программные коды) должны работать правильно при любых вариантах ввода данных.
Данные также могут не только вводиться вручную, но они могут загружаться из других таблиц и баз данных. Там эти данные тоже могут оказаться не теми, на которые рассчитывает программист при написании своего кода.
Поэтому проверка данных, их коррекция там, где это возможно, занимают у программистов львиную долю времени. Написать сразу правильный код (например, формулы, как показано в данной статье) – это не самое сложное в работе программистов.
Намного сложнее написать ПРАВИЛЬНЫЙ код, который может работать даже при НЕПРАВИЛЬНЫХ данных. Вот что отнимает время и вынуждает вести разработки намного дольше, чем может показаться в самом начале.
Тернии на пути программистов к конечному результату
Выше был приведен пример программирования (кодирования) для простого деления в Excel чисел C=A/B. В этом примере нам понадобилось изменить простой код на более сложный, а также добавить несколько дополнительных проверочных данных. При этом мы даже не подступили к решению задачи о том, что делать, если придется делить на ноль.
Мы рассмотрели только вопрос замены цифр на похожие буквы. Значит, на очереди – противодействие ошибке деления на ноль. Этот проверочный и корректирующий код тоже надо бы написать.
Кроме того, нам, возможно, понадобится еще поработать над вопросами автоматического превращения чисел от 1.1 до 12.12 в даты от 1 января 1900 года до 12 декабря 1900 года. Это тоже, вообще-то серьезная проблема.
Мы к тому же не проверяли, как ведет себя наш код при работе с отрицательными числами. Не проверяли его на работу с очень большими числами, которые записываются в экспоненциальном виде.
Мы не смотрели, что покажет нам код, если некоторое значение разделить не на ноль, но на число, которое очень близко к нулю. Результат такого деления будет огромен, и неизвестно, поместится ли он в ячейку B4, и как он там будет выглядеть.
Можно и дальше продолжать список возможных проблем на простом примере деления двух чисел одно на другое. По идее, программисту нужно решить все потенциальные вопросы и проблемы. Только тогда он может считать свою работу сделанной.
А если работа сделана – можно порадоваться и получить несказанное удовлетворение и удовольствие от полученного результата. Каждая завершенная программа есть уверенная победа программиста на пути собственного совершенствования и постепенного превращения в незаменимого высокопрофессионального специалиста.
Другие материалы:
1. Как определить срок покупки железнодорожных билетов с помощью Microsoft Excel
2. Сравнение возможностей Word и Excel для работы с таблицами
3. Извлечение фамилии из ФИО в Excel: способ перевода на язык цифр
5. Про использование английского языка в программировании
Благодарю за информацию, спасибо