Программирование на экселе
5 полезных функций Excel для начинающих программистов
Работу в табличном редакторе Excel тоже можно автоматизировать и запрограммировать. Вы сможете здорово помочь своим бухгалтерам с отчётами, маркетологам — с анализом рекламы, а сами научитесь разбираться в алгоритмах.
Мы разберём 5 полезных функций Excel. Если вы думаете, что Excel — это только про цифры и таблички, то вот вам видео, где в Excel запрограммировали настоящую 3D-игру.
Чтобы было проще разобраться, все формулы и примеры мы записали в Excel-файл, который можно скачать и использовать для экспериментов. Каждый пример — на отдельной вкладке снизу.
Это одна из самых важных функций в Excel. Как и в настоящем языке программирования, она проверяет какое-то условие, и если оно выполняется — пишет в ячейку что-то одно, а если нет — пишет что-то другое.
В общем виде она выглядит так:
В условии может быть что угодно: сравнение ячеек, другие формулы, сравнения и математические команды — всё, что вам нужно проверить.
На практике можно сделать, например, так: пусть Excel проверяет возраст, и пишет документ, который в этом возрасте удостоверяет личность. До 14 лет это свидетельство о рождении, а после — паспорт. Для этого используем такую команду в ячейке:
Программа проверит, что стоит в предыдущей ячейке, и если там число меньше 14, то напишет «Свидетельство о рождении», а если уже есть 14 лет, то «Паспорт»:
СЧЁТЕСЛИ и СЧЁТЕСЛИМН
Часто бывает нужно посчитать количество строк или заполненных ячеек по каким-то параметрам, например узнать количество работников старше 40 лет, или посчитать все строки, где есть слово «переменная». Для этого используют функцию СЧЁТЕСЛИ:
Диапазон — это группа ячеек, в которых мы будем что-то искать, а условие — это по какому параметру мы решим, что ячейка нам подходит.
Допустим мы ведём семейный бюджет и нам нужно узнать, сколько раз у нас были покупки больше 5000 рублей в одном чеке. Для этого используем такое:
Теперь посложнее. Если нам нужно посчитать количество ячеек по нескольким условиям одновременно, то используют функцию СЧЁТЕСЛИМН:
То, что в прямоугольных скобках — дополнительные условия, их может быть максимум 127, а сами скобки при этом ставить не нужно. Обратите внимание что для каждого нового условия можно задать свой диапазон. Функция проверит все условия, каждое в своём диапазоне, и если все условия одновременно выполняется — посчитает количество таких ячеек.
Для примера найдём все траты больше 5000 в одном чеке, за которые отвечает Миша:
Теперь у нас первый диапазон отвечает за сумму в чеке, а второй — за имена, поэтому и условия у каждого из них разные.
Функция возвращает максимальное значение из выбранного диапазона:
Давайте используем её, чтобы найти самую дорогую покупку в бюджете из предыдущего примера. Для этого запишем её так:
ПОИСКПОЗ
Поиск позиции часто используют, когда нужно найти положение определённого элемента в таблице:
Значение — то, что нам нужно найти в таблице, диапазон просмотра — где именно мы будем искать наше значение. Если в качестве диапазона укажем столбец с цифрами, то функция вернёт номер в этом столбце, где встречается нужная цифра.
Давайте найдём номер строки с максимальной покупкой:
Это число нам понадобится для следующей функции
ИНДЕКС
Эта функция возвращает значение конкретной ячейки в указанном диапазоне:
=ИНДЕКС(диапазон; номер_строки; [номер_столбца])
Если в диапазон ячеек входит только один столбец, достаточно будет указать только номер строки. Когда в выбранном диапазоне получается два столбца и больше, можно будет выбрать его номер, чтобы точно обозначить ячейку.
Попробуем в нашем примере с бюджетом найти того, кто сделал самую большую покупку. Мы уже знаем номер строки, в которой записана самая большая сумма, и на этой же строке записан тот, кто эту сумму потратил. Используем это:
Когда Excel встретит такую формулу, он возьмёт наш диапазон из второго столбца, затем возьмёт номер строки с самой большой покупкой (она у нас в ячейке Е10, нашли в прошлом примере), и определит, что самую крупную покупку сделал Миша.
Что дальше
Вы уже знаете достаточно для того, чтобы вести в Excel свой семейный или личный бюджет. Используйте наши формулы и анализируйте полученные данные. В следующей статье мы расскажем о том, как менять внешний вид ячеек и поговорим о новых функциях.
Шаг #1. Базовые понятия (изучаем Excel с нуля)
Этой заметкой я бы хотел начать серию, в которой изложу пять простых шагов, которые позволят вам начать использовать Эксель в своей работе.
По сути, это будет база для последующих шагов к освоению программы.
Возможно вы знаете, что программа Excel входит в пакет офисных программ Microsoft Office и является, пожалуй, самой известной и популярной программой из категории электронных таблиц.
Excel стал своеобразным стандартом в индустрии и одним из основных преимуществ программы является ее универсальность. Хоть и есть некоторые общепринятые сферы, в которых используется Excel, тем не менее, возможности программы если и не безграничны, то очень широки.
Вот основные сферы, в которых применяется Excel:
- произведение расчетов практически любой сложности;
- автоматизация однотипных расчетов;
- создание отчетов;
- организация списков и перечней;
- анализ и обработка числовых данных;
- создание диаграмм и графиков на основе данных;
- создание рисунков и схем.
И еще много чего другого, ведь Excel поддерживает язык программирования VBA ( Visual Basic for Applications ), а это означает, что на базе Excel можно создавать свои программы под какие-то узко специализированные задачи.
И все эти возможности доступны каждому!
В среде обычных пользователей бытует мнение, что Excel — это сложная и трудно осваиваемая программа… Но это совсем не так и мы с вами сделаем в этом курсе пять простых шагов, которые, как я надеюсь, развеют миф о «сложности Эксель».
Я считаю, что практика — лучший учитель и все новое следует осваивать именно на конкретных примерах, а не в теории. Поэтому данный мини-курс будет практическим. Все нужные нам инструменты мы будем осваивать по мере необходимости.
Но как бы мне не хотелось миновать теорию, все же есть некоторые базовые вещи, о которых необходимо рассказать в самом начале, так как в дальнейшем мы будем к ним постоянно обращаться. Я имею в виду интерфейс (внешний вид) программы, а также некоторые ее ключевые элементы.
В данном курсе мы будем рассматривать Excel из пакета Microsoft Office 2016, но курс можно использовать для изучения более ранних версий программы, а именно Excel 2007, 2010 и 2013, так как внешние и функциональные отличия между этими версиями непринципиальны.
Все документы, созданные в программе Excel, называются книгами и файлы рабочих книг имеют расширение . xlsx (в более старых версиях Excel расширение было . xls) .
Каждая книга открывается в отдельном окне программы.
При запуске программы следует создать новую книгу и приступить к созданию нужной нам электронной таблицы.
Поскольку книга в обычном понимании состоит из листов, то и в книге Excel мы их также сможем найти.
По умолчанию в новой книге уже есть лист ( Лист1 ). В версии Excel 2016 он только один, но мы можем создать столько листов, сколько будет необходимо. Для этого необходимо нажать соответствующую кнопку рядом с ярлычком листа.
Переключаться между ними можно с помощью специальных ярлычков в нижней части окна программы.
Каждый лист представляет собой таблицу, ну а любая таблица состоит из строк и столбцов. При этом строки пронумерованы от 1 до 1 048 576, а столбцы обозначаются буквами латинского алфавита — от А до XFD.
При этом, если проследить обозначение столбцов, то мы увидим, что когда алфавит заканчивается к букве прибавляется следующая по алфавиту буква, например, АА, АВ, АС и т.д.
Логично, что на пересечении строк и столбцов располагается ячейка.
Ячейка — это главная «рабочая лошадка» Экселя. Каждая ячейка таблицы может хранить число, текст или формулу. Именно формулы делают электронные таблицы такими удобными, но к формулам мы вернемся несколько позже.
Каждая ячейка имеет свой уникальный адрес. Если вы имеете представление, каким образом в шахматах или на поле игры «Морской бой» отмечается положение объектов, то вам будет легко понять и принцип адресов в Эксель.
В Экселе верхняя левая ячейка имеет адрес A1, а это означает, что она находится на пересечении столбца А и строки 1. Щелкая мышью по ячейкам на листе, мы сможем увидеть их адрес в поле Имени .
В любой момент времени только одна ячейка на листе может быть активной, то есть готовой к вводу данных. Об этом свидетельствует рамка, обрамляющая выделенную ячейку, а также ее адрес в поле Имени .
Обрамление называется табличным курсором и мы можем его перемещать либо мышью, щелчком по нужной ячейки таблицы, либо воспользоваться клавишами управления курсором (стрелками вправо-влево, вверх-вниз).
Также можно увидеть, что заголовки строки и столбца, на пересечении которых находится активная ячейка, подсвечиваются цветом, что также может быть полезно для быстрого определения местоположения выбранной ячейки.
Итак, суть работы в Excel сводится к вводу и форматированию данных в таблице на рабочем листе. Чтобы начать ввод данных в ячейку или изменить ее внешний вид, мы должны сначала эту ячейку выбрать (активировать). Для этого можно использовать либо мышь, либо клавиши управления курсором.
Все операции с ячейками производятся с помощью инструментов, которые сгруппированы по назначению и вынесены на панели инструментов (1, см. рис. ниже).
Сами панели инструментов также сгруппированы и располагаются на тематических вкладках (2) — Главная , Вставка , Разметка страницы и т.д.
Щелчком мыши по вкладке мы переключаемся на нужную вкладку и видим расположенные на ней панели инструментов, которые в свою очередь подписаны в нижней части (3). Это дает нам представление о том, для каких целей используются инструменты конкретной панели.
Область, где размещаются панели инструментов, называют Лентой (4). Ее можно скрыть, чтобы расширить рабочую область программы. Делается это двойным щелчком мыши по активной вкладке.
При этом если лента скрыта, то она будет временно появляться после щелчка мышью по любой из ее вкладок, а затем она будет снова исчезать, когда мы переключимся в рабочую область программы. Это может быть удобным при работе с Эксель на компьютерах с небольшой диагональю экрана, например, на нетбуках.
Ну а с теорией пора заканчивать и переходить к практике. На следующем шаге создадим простую электронную таблицу.
Если вам удобнее воспринимать информацию в видео-формате, то посмотрите ролик:
Если вам интересен Эксель, то подписывайтесь на этот Дзен-канал или мой видео канал на YouTube.
Начала программирования в Excel
Предисловие
Эта книга посвящена Excel — основам программирования в Excel , связи Excel с базами данных и другими источниками данных, анализу офисной деятельности, выполняемыми средствами Excel , созданию интерактивных документов в Excel , приданию Web -страницам функциональности Excel . Отдавая должное этому замечательному приложению, я и решил назвать книгу «Мир объектов Excel 2000».
Почему не просто «Мир Excel 2000»? Видимо, потому что я предпочитаю смотреть на все, что происходит в Excel , с объектной точки зрения, рассматривать все происходящее как действия над объектами. Да и описанию самих объектов в этой книге уделяется достаточно много внимания. При этом в круг рассмотрения входят не только объекты самого Excel . Мир объектов Excel более широк. Так или иначе, в рассмотрении появляются общие объекты Office 2000, объекты других приложений, в книге, например, много внимания уделяется связи Excel и Access. Помимо объектов Excel в книге подробно рассматриваются еще две группы объектов — ADO и OWC. Объекты ADO , позволяющие организовать доступ к базам данных, несомненно, входят в мир Excel , поскольку, чаще всего, Excel является тем приложением, где обрабатываются данные, хранимые в различных источниках. Компоненты OWC, обладающие функциональностью Excel , — их объектная модель — это тоже часть мира объектов Excel . Без этих объектов не обойтись, если Ваше решение переносится в интранет или интернет , и Вы захотите создать Web -узел, страницы которого обладают функциональностью Excel документов.
Что же можно найти в этой книге, и кому она предназначена?
Эта книга предназначена тем, кто создает решения на базе Excel . Конечно, в первую очередь речь идет о тех, кто уже использует программирование на VBA и VBScript при создании своих решений. Но я думаю, что и те, кто давно работает в Excel , но еще не использовал программные способы настройки своих решений, могут начать с этой книги, хотя, предупреждаю, требуется определенная программистская подготовка.
Первые две лекции посвящены началам программирования в Excel . Они, надеюсь, доступны опытным пользователям и начинающим программистам. Думаю, что их с интересом прочтут и те, кто занимается обучением программированию в любой среде программирования. Я высказываю и пытаюсь обосновать здесь «крамольную» мысль о том, что Excel является прекрасной средой начального обучения программированию в школе и в вузах. Надеюсь, что и опытные программисты найдут здесь кое-что полезное для себя, особенно, во второй главе, адресованной математикам.
Глава 3 дает описание объектной модели Excel . Подробно рассмотрены все основные действующие лица этой модели — объекты Application , WorkBook, WorkSheet, Chart , Range и другие. Понятно, что при раскрытии этой темы без технических деталей не обойтись, поэтому чтение главы довольно утомительно, но как справочный материал, она, надеюсь, будет весьма полезной.
Базы данных и другие источники данных — это одна из ведущих тем этой книги. Глава 4 » Excel и базы данных » начинает эту тему. В этой же главе дается знакомство с приложением Access, на примере показано, как строится база данных в Access, изучаются связи Excel и Access.
Пятая и шестая главы книги посвящены объектам ADO . Уже то, что этим объектам посвящены две главы, говорит о степени подробности рассмотрения этой темы. Объекты ADO задают интерфейс между самыми разнообразными источниками данных и клиентским приложением, где эти данные обрабатываются. Таким приложением совсем не обязательно должен быть Excel , сфера применения объектов ADO значительно шире. Но Excel это одна из наиболее подходящих кандидатур на роль такого клиентского приложения. Чтение этих глав требует определенной подготовки и ориентированно на более продвинутых программистов.
Седьмая глава книги посвящена разработке интерактивных документов. Она носит в определенном смысле центральный характер. В ней рассматривается весь процесс создания интерактивного документа Excel . Этот документ можно считать примером создаваемого в Excel типичного решения, в котором программный проект играет определяющую роль. Предлагаемое решение использует базу данных Access и объекты ADO для организации связи с базой данных. Здесь же обсуждается и ряд других вопросов, важных в практической работе, начиная от организации интерфейса пользователя до получения печатной формы документа.
Глава 8 посвящена вопросам, возникающим при анализе офисной деятельности. В ней делается попытка сочетать содержательное рассмотрение, например, рассмотрение того, как проводить анализ типа «Что, если …» с рассмотрением средств Excel , используемых в таком анализе. Здесь рассматриваются сводные таблицы и сводные диаграммы, сценарии , методы прогнозирования и многое другое.
В девятой главе подробно обсуждается создание проекта под названием «MasterF». С содержательной точки зрения рассматривается задача оптимального выбора инвестиционных вложений. В проектном решении используется мощный встроенный инструмент Excel — решатель Solver, позволяющий решать сложные оптимизационные задачи. Данный проект демонстрирует построение надстройки над встроенным инструментарием Excel . Полагаю, что он может иметь не только учебную, но и практическую ценность для тех, кто решает подобные задачи.
В главе 10 в рассмотрение вводятся новые объекты, тесно связанные с Excel . В этой главе рассматриваются Office Web Components — компоненты OWC. По моему мнению, эти компоненты являются лучшим продуктом, созданным Microsoft в области компонентного программирования. Они дают возможность добавить функциональность Excel в свои решения без использования самого Excel и других приложений Office 2000. Основное предназначение этих компонент — обеспечение корпоративной работы с документами в интрасетях, что позволяет создавать интерактивные страницы Web -узлов, обладающие функциональностью Excel . При рассмотрении этих компонент большое внимание уделяется программной работе с этими компонентами, возможности программной настройки Web -документов, использующих эти компоненты.
Глава 11 посвящена введению в Web — программирование . Я подробно рассматриваю процесс создания интерактивного Web -документа. Ключевым словом здесь является » интерактивность «, поскольку, по большому счету, вся эта книга о том, как придать нужную интерактивность создаваемым документам. Глава носит вполне самостоятельный характер, но, по сути, является естественным продолжением двух тем, рассматриваемых в главах 7 и 10, поскольку с одной стороны речь идет о создании интерактивного документа, с другой — документа Web , страницы которого могут обладать функциональностью Excel . Замечу, что при рассмотрении вопросов создания интерактивного Web -документа, я ограничиваюсь рассмотрением программных продуктов от Microsoft. Так что роль Web -сервера, выполняющего сценарии на серверной стороне, играет IIS — Internet Information Server , соответствующие страницы узла являются ASP-страницами, а обозреватель, выполняющий код на клиентской стороне, это Internet Explorer.
Главу 12 я решил посвятить описанию проектов, выполненных студентами, которым я читал курс «Офисное программирование «. Надеюсь, что часть проектов, о которых идет речь в этой главе, будут на сервере, их программный код открыт и доступен для изучения. Работы студентов расширяют множество примеров, рассмотренных в книге, и являются хорошей иллюстрацией возможностей офисного программирования. Все игры ориентированы, в первую очередь , на школьников, но не только на них. Большинство игр относится к классу «развивающих» игр, направленных на развитие логического мышления. Среди игр есть вариации известных игр — Lines, Tetris, Digger, игры-головоломки, известная карточная игра «Подкидной дурак» и другие игры.
Завершая предисловие, хочу сказать, что предлагаемый курс тесно связан с книгами серии «Офисное программирование «, вышедшими в издательстве «Русская редакция». Есть явные и неявные ссылки в тексте многих глав:
- «VBA в Office 2000. Офисное программирование,
- «Средства разработки VBA-программиста». Офисное программирование,
- Мир объектов Excel 2000. Средства разработки VBA-программиста.
Хорошо, если читатели знакомы с этими книгами, или прошли курсы по первым двум книгам, но это не обязательное требование. Пройти данный курс можно вполне самостоятельно. Скажу даже, что я старался, по возможности, сделать каждую главу доступной для независимого чтения.
Просьба к читателям. Поскольку курс построен на основе ранее вышедшей книги и практически не подвергался переделке, то возможны «висячие ссылки», имеющие смысл только для книги. Часть материала уже устарела. Постарайтесь быть снисходительными к этим огрехам. Я искренне верю, что основное содержание не потеряло своей ценности и может быть полезным всем, кто так или иначе связан с офисным программированием.
VBA Excel: примеры программ. Макросы в Excel
Немногие знают, что первая версия популярного продукта Microsoft Excel появилась в 1985 году. С тех пор он пережил несколько модификаций и востребован у миллионов пользователей по всему миру. При этом многие работают лишь с малой толикой возможностей этого табличного процессора и даже не догадываются, как им могло бы облегчить жизнь умение программирования в Excel.
Что такое VBA
Программирование в Excel осуществляется посредством языка программирования Visual Basic for Application, который изначально встроен в самый известный табличный процессор от Microsoft.
К его достоинствам специалисты относят сравнительную легкость освоения. Как показывает практика, азами VBA могут овладеть даже пользователи, которые не имеют навыков профессионального программирования. К особенностям VBA относится выполнение скрипта в среде офисных приложений.
Недостатком программы являются проблемы, связанные с совместимостью различных версий. Они обусловлены тем, что код программы VBA обращается к функциональным возможностям, которые присутствуют в новой версии продукта, но отсутствуют в старой. Также к минусам относят и чрезмерно высокую открытость кода для изменения посторонним лицом. Тем не менее Microsoft Office, а также IBM Lotus Symphony позволяют пользователю применять шифрование начального кода и установку пароля для его просмотра.
Объекты, коллекции, свойства и методы
Именно с этими понятиями нужно разобраться тем, кто собирается работать в среде VBA. Прежде всего необходимо понять, что такое объект. В Excel в этом качестве выступают лист, книга, ячейка и диапазон. Данные объекты обладают специальной иерархией, т.е. подчиняются друг другу.
Главным из них является Application, соответствующий самой программе Excel. Затем следуют Workbooks, Worksheets, а также Range. Например, для обращения к ячейке A1 на конкретном листе следует указать путь с учетом иерархии.
Что касается понятия «коллекция», то это группа объектов того же класса, которая в записи имеет вид ChartObjects. Ее отдельные элементы также являются объектами.
Следующее понятие — свойства. Они являются необходимой характеристикой любого объекта. Например, для Range — это Value или Formula.
Методы — это команды, показывающие, что требуется сделать. При написании кода в VBA их необходимо отделять от объекта точкой. Например, как будет показано в дальнейшем, очень часто при программировании в «Эксель» используют команду Cells(1,1).Select. Она означает, что необходимо выбрать ячейку с координатами (1,1) т.е. A1.
Вместе с ней нередко используется Selection.ClearContents. Ее выполнение означает очистку содержимого выбранной ячейки.
Как начать
Прежде всего требуется создать файл и сохранить его, присвоив имя и выбрав тип «Книга Excel с поддержкой макросов».
Затем необходимо перейти в приложение VB, для чего достаточно воспользоваться комбинацией клавиш «Alt» и «F11». Далее:
- в строке меню, расположенном в верхней части окна, нажимают на иконку рядом с иконкой Excel;
- выбирают команду Mudule;
- сохраняют, нажав на иконку с изображением floppy disk;
- пишут, скажем так, набросок кода.
Он выглядит следующим образом:
Обратите внимание, что строка «’Наш код» будет выделена другим цветом (зеленым). Причина в апострофе, поставленном в начале строки, который обозначает, что далее следует комментарий.
Теперь вы можете написать любой код и создать для себя новый инструмент в VBA Excel (примеры программ см. далее). Конечно, тем, кто знаком с азами Visual Basic, будет намного проще. Однако даже те, кто их не имеет, при желании смогут освоиться достаточно быстро.
Макросы в Excel
За таким названием скрываются программы, написанные на языке Visual Basic for Application. Таким образом, программирование в Excel — это создание макросов с нужным кодом. Благодаря этой возможности табличный процессор Microsoft саморазвивается, подстраиваясь под требования конкретного пользователя. Разобравшись с тем, как создавать модули для написания макросов, можно приступать к рассмотрению конкретных примеров программ VBA Excel. Лучше всего начать с самых элементарных кодов.
Пример 1
Задача: написать программу, которая будет копировать значение содержимое одной ячейки и затем записывать в другую.
- открывают вкладку «Вид»;
- переходят на пиктограмму «Макросы»;
- жмут на «Запись макроса»;
- заполняют открывшуюся форму.
Для простоты в поле «Имя макроса» оставляют «Макрос1», а в поле «Сочетание клавиш» вставляют, например, hh (это значит, что запустить программку можно будет блиц-командой «Ctrl+h»). Нажимают Enter.
Теперь, когда уже запущена запись макроса, производят копирование содержимого какой-либо ячейки в другую. Возвращаются на исходную пиктограмму. Нажимают на «Запись макроса». Это действие означает завершение программки.
- вновь переходят на строку «Макросы»;
- в списке выбирают «Макрос 1»;
- нажимают «Выполнить» (то же действие запускается начатием сочетания клавиш «Ctrl+hh»).
В результате происходит действие, которое было осуществлено в процессе записи макроса.
Имеет смысл увидеть, как выглядит код. Для этого вновь переходят на строку «Макросы» и нажимают «Изменить» или «Войти». В результате оказываются в среде VBA. Собственно, сам код макроса находится между строками Sub Макрос1() и End Sub.
Если копирование было выполнено, например, из ячейки А1 в ячейку C1, то одна из строк кода будет выглядеть, как Range(“C1”).Select. В переводе это выглядит, как «Диапазон(“C1”).Выделить», иными словами осуществляет переход в VBA Excel, в ячейку С1.
Активную часть кода завершает команда ActiveSheet.Paste. Она означает запись содержания выделенной ячейки (в данном случае А1) в выделенную ячейку С1.
Пример 2
Циклы VBA помогают создавать различные макросы в Excel.
Циклы VBA помогают создавать различные макросы. Предположим, что имеется функция y=x + x 2 + 3x 3 – cos(x). Требуется создать макрос для получения ее графика. Сделать это можно только, используя циклы VBA.
За начальное и конечное значение аргумента функции берут x1=0 и x2=10. Кроме того, необходимо ввести константу — значение для шага изменения аргумента и начальное значение для счетчика.
Все примеры макросов VBA Excel создаются по той же процедуре, которая представлена выше. В данном конкретном случае код выглядит, как:
Do While x1 0 Then Cells(1, 1).Value = 1