Как сделать змейку в excel

Автоматизация рутины в Microsoft Excel при помощи VBA

В этом посте я расскажу, что такое VBA и как с ним работать в Microsoft Excel 2007/2010 (для более старых версий изменяется лишь интерфейс — код, скорее всего, будет таким же) для автоматизации различной рутины.

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

VBA (Visual Basic for Applications) — это упрощенная версия Visual Basic, встроенная в множество продуктов линейки Microsoft Office. Она позволяет писать программы прямо в файле конкретного документа. Вам не требуется устанавливать различные IDE — всё, включая отладчик, уже есть в Excel.

Еще при помощи Visual Studio Tools for Office можно писать макросы на C# и также встраивать их. Спасибо, FireStorm.

Сразу скажу — писать на других языках (C++/Delphi/PHP) также возможно, но требуется научится читать, изменять и писать файлы офиса — встраивать в документы не получится. А интерфейсы Microsoft работают через COM. Чтобы вы поняли весь ужас, вот Hello World с использованием COM.

Поэтому, увы, будем учить Visual Basic.

Чуть-чуть подготовки и постановка задачи

Итак, поехали. Открываем Excel.

Для начала давайте добавим в Ribbon панель «Разработчик». В ней находятся кнопки, текстовые поля и пр. элементы для конструирования форм.

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excelКак сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

Теперь давайте подумаем, на каком примере мы будем изучать VBA. Недавно мне потребовалось красиво оформить прайс-лист, выглядевший, как таблица. Идём в гугл, набираем «прайс-лист» и качаем любой, который оформлен примерно так (не сочтите за рекламу, пожалуйста):

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

То есть требуется, чтобы было как минимум две группы, по которым можно объединить товары (в нашем случае это будут Тип и Производитель — в таком порядке). Для того, чтобы предложенный мною алгоритм работал корректно, отсортируйте товары так, чтобы товары из одной группы стояли подряд (сначала по Типу, потом по Производителю).

Результат, которого хотим добиться, выглядит примерно так:

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

Разумеется, если смотреть прайс только на компьютере, то можно добавить фильтры и будет гораздо удобнее искать нужный товар. Однако мы хотим научится кодить и задача вполне подходящая, не так ли?

Кодим

Для начала требуется создать кнопку, при нажатии на которую будет вызываться наша програма. Кнопки находятся в панели «Разработчик» и появляются по кнопке «Вставить». Вам нужен компонент формы «Кнопка». Нажали, поставили на любое место в листе. Далее, если не появилось окно назначения макроса, надо нажать правой кнопкой и выбрать пункт «Назначить макрос». Назовём его FormatPrice. Важно, чтобы перед именем макроса ничего не было — иначе он создастся в отдельном модуле, а не в пространстве имен книги. В этому случае вам будет недоступно быстрое обращение к выделенному листу. Нажимаем кнопку «Новый».

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excelКак сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

И вот мы в среде разработки VB. Также её можно вызвать из контекстного меню командой «Исходный текст»/«View code».

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excelКак сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

Перед вами окно с заглушкой процедуры. Можете его развернуть. Код должен выглядеть примерно так:

Напишем Hello World:

Sub FormatPrice()
MsgBox «Hello World!»
End Sub

И запустим либо щелкнув по кнопке (предварительно сняв с неё выделение), либо клавишей F5 прямо из редактора.

Тут, пожалуй, следует отвлечься на небольшой ликбез по поводу синтаксиса VB. Кто его знает — может смело пропустить этот раздел до конца. Основное отличие Visual Basic от Pascal/C/Java в том, что команды разделяются не ;, а переносом строки или двоеточием (:), если очень хочется написать несколько команд в одну строку. Чтобы понять основные правила синтаксиса, приведу абстрактный код.

Примеры синтаксиса

Dim res As sTRING ‘ Регистр в VB не важен. Впрочем, редактор Вас поправит
Dim i As Integer
‘ Цикл всегда состоит из нескольких строк
For i = 1 To 10
res = res + CStr(i) ‘ Конвертация чего угодно в String
If i = 5 Then Exit For
Next i

Dim x As Double
x = Val( «1.234» ) ‘ Парсинг чисел
x = x + 10
MsgBox x

On Error GoTo Err ‘ При ошибке перейти к метке Err
x = 5 / 0
MsgBox «OK!»
GoTo ne

ne:
On Error GoTo 0 ‘ Отключаем обработку ошибок

‘ Циклы бывает, какие захотите
Do While True
Exit Do

Loop ‘While True
Do ‘Until False
Exit Do
Loop Until False
‘ А вот при вызове функций, от которых хотим получить значение, скобки нужны.
‘ Val также умеет возвращать Integer
Select Case LengthSqr(Len( «abc» ), Val( «4» ))
Case 24
MsgBox «0»
Case 25
MsgBox «1»
Case 26
MsgBox «2»
End Select

Грабли-1. При копировании кода из IDE (в английском Excel) есь текст конвертируется в 1252 Latin-1. Поэтому, если хотите сохранить русские комментарии — надо сохранить крокозябры как Latin-1, а потом открыть в 1251.

Грабли-2. Т.к. VB позволяет использовать необъявленные переменные, я всегда в начале кода (перед всеми процедурами) ставлю строчку Option Explicit. Эта директива запрещает интерпретатору заводить переменные самостоятельно.

Грабли-3. Глобальные переменные можно объявлять только до первой функции/процедуры. Локальные — в любом месте процедуры/функции.

Еще немного дополнительных функций, которые могут пригодится: InPos, Mid, Trim, LBound, UBound. Также ответы на все вопросы по поводу работы функций/их параметров можно получить в MSDN.

Надеюсь, что этого Вам хватит, чтобы не пугаться кода и самостоятельно написать какое-нибудь домашнее задание по информатике. По ходу поста я буду ненавязчиво знакомить Вас с новыми конструкциями.

Кодим много и под Excel

В этой части мы уже начнём кодить нечто, что умеет работать с нашими листами в Excel. Для начала создадим отдельный лист с именем result (лист с данными назовём data). Теперь, наверное, нужно этот лист очистить от того, что на нём есть. Также мы «выделим» лист с данными, чтобы каждый раз не писать длинное обращение к массиву с листами.

Sub FormatPrice()
Sheets( «result» ).Cells.Clear
Sheets( «data» ).Activate
End Sub

Работа с диапазонами ячеек

Вся работа в Excel VBA производится с диапазонами ячеек. Они создаются функцией Range и возвращают объект типа Range. У него есть всё необходимое для работы с данными и/или оформлением. Кстати сказать, свойство Cells листа — это тоже Range.

Примеры работы с Range

Sheets( «result» ).Activate
Dim r As Range
Set r = Range( «A1» )
r.Value = «123»
Set r = Range( «A3,A5» )
r.Font.Color = vbRed
r.Value = «456»
Set r = Range( «A6:A7» )
r.Value = «=A1+A3»

Теперь давайте поймем алгоритм работы нашего кода. Итак, у каждой строчки листа data, начиная со второй, есть некоторые данные, которые нас не интересуют (ID, название и цена) и есть две вложенные группы, к которым она принадлежит (тип и производитель). Более того, эти строки отсортированы. Пока мы забудем про пропуски перед началом новой группы — так будет проще. Я предлагаю такой алгоритм:

Для упрощения работы рекомендую определить следующие функции-сокращения:

Function GetCol(Col As Integer ) As String
GetCol = Chr(Asc( «A» ) + Col)
End Function

Далее определим глобальную переменную «текущая строчка»: Dim CurRow As Integer. В начале процедуры её следует сделать равной единице. Еще нам потребуется переменная-«текущая строка в data», массив с именами групп текущей предыдущей строк. Потом можно написать цикл «пока первая ячейка в строке непуста».

Глобальные переменные

Option Explicit ‘ про эту строчку я уже рассказывал
Dim CurRow As Integer
Const GroupsCount As Integer = 2
Const DataCount As Integer = 3

FormatPrice

Sub FormatPrice()
Dim I As Integer ‘ строка в data
CurRow = 1
Dim Groups(1 To GroupsCount) As String
Dim PrGroups(1 To GroupsCount) As String

Теперь надо заполнить массив Groups:

На месте многоточия

И создать заголовки:

На месте многоточия в предыдущем куске

For I2 = 1 To GroupsCount
If Groups(I2) <> PrGroups(I2) Then
Dim I3 As Integer
For I3 = I2 To GroupsCount
AddHeader I3, Groups(I3)
Next I3
Exit For
End If
Next I2

Не забудем про процедуру AddHeader:

Перед FormatPrice

Теперь надо перенести всякую информацию в result

Подогнать столбцы по ширине и выбрать лист result для показа результата

После цикла в конце FormatPrice

Sheets( «Result» ).Activate
Columns.AutoFit

Всё. Можно любоваться первой версией.

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

Некрасиво, но похоже. Давайте разбираться с форматированием. Сначала изменим процедуру AddHeader:

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

Осталось только сделать границы. Тут уже нам требуется работать со всеми объединёнными ячейками, иначе бордюр будет только у одной:

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

Поэтому чуть-чуть меняем код с добавлением стиля границ:

Select Case Ty
Case 1 ‘ Тип
.Font.Bold = True
.Font.Size = 16
.Borders(xlTop).Weight = xlThick
Case 2 ‘ Производитель
.Font.Size = 12
.Borders(xlTop).Weight = xlMedium
End Select
.Borders(xlBottom).Weight = xlMedium ‘ По убыванию: xlThick, xlMedium, xlThin, xlHairline
End With
CurRow = CurRow + 1
End Sub

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

Осталось лишь добится пропусков перед началом новой группы. Это легко:

В начале FormatPrice

Dim I As Integer ‘ строка в data
CurRow = 0 ‘ чтобы не было пропуска в самом начале
Dim Groups(1 To GroupsCount) As String

В цикле расстановки заголовков

If Groups(I2) <> PrGroups(I2) Then
CurRow = CurRow + 1
Dim I3 As Integer

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

В точности то, что и хотели.

Надеюсь, что эта статья помогла вам немного освоится с программированием для Excel на VBA. Домашнее задание — добавить заголовки «ID, Название, Цена» в результат. Подсказка: CurRow = 0 CurRow = 1.

Файл можно скачать тут (min.us) или тут (Dropbox). Не забудьте разрешить исполнение макросов. Если кто-нибудь подскажет человеческих файлохостинг, залью туда.

Спасибо за внимание.

Буду рад конструктивной критике в комментариях.

UPD: Перезалил пример на Dropbox и min.us.

UPD2: На самом деле, при вызове процедуры с одним параметром скобки можно поставить. Либо использовать конструкцию Call Foo(«bar», 1, 2, 3) — тут скобки нужны постоянно.

Источник

Как в Excel создаются формулы и таблицы. Пошагово

Работа в Excel c формулами и таблицами для чайников. Как же делать формулы и таблицы?

Формула предписывает программе Excel порядок действий с числами, значениями в ячейке или группе ячеек. Без формул электронные таблицы не нужны в принципе. Формулы и таблицы
Excel это очень важный момент!

Конструкция формулы включает в себя: константы, операторы, ссылки, функции, имена диапазонов, круглые скобки содержащие аргументы и другие формулы. На примере разберем практическое применение формул для начинающих пользователей.

ФОРМУЛЫ В EXCEL ДЛЯ ЧАЙНИКОВ

Чтобы задать формулу для ячейки, необходимо активизировать ее (поставить курсор) и ввести равно (=). Так же можно вводить знак равенства в строку формул. После введения формулы нажать Enter. В ячейке появится результат вычислений.

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

В Excel применяются стандартные математические операторы:

ОператорОперацияПример
+ (плюс)Сложение=В4+7
— (минус)Вычитание=А9-100
* (звездочка)Умножение=А3*2
/ (наклонная черта)Деление=А7/А8
^ (циркумфлекс)Степень=6^2
= (знак равенства)Равно
Больше
=Больше или равно
<>Не равно

Символ «*» используется обязательно при умножении. Опускать его, как принято во время письменных арифметических вычислений, недопустимо. То есть запись (2+3)5 Excel не поймет.

Программу Excel можно использовать как калькулятор. То есть вводить в формулу числа и операторы математических вычислений и сразу получать результат.

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

Но чаще вводятся адреса ячеек. То есть пользователь вводит ссылку на ячейку, со значением которой будет оперировать формула.

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

При изменении значений в ячейках формула автоматически пересчитывает результат.

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

Ссылки можно комбинировать в рамках одной формулы с простыми числами.

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

Оператор умножил значение ячейки В2 на 0,5. Чтобы ввести в формулу ссылку на ячейку, достаточно щелкнуть по этой ячейке.

Если в одной формуле применяется несколько операторов, то программа обработает их в следующей последовательности:

Поменять последовательность можно посредством круглых скобок: Excel в первую очередь вычисляет значение выражения в скобках.

КАК В ФОРМУЛЕ EXCEL ОБОЗНАЧИТЬ ПОСТОЯННУЮ ЯЧЕЙКУ

Различают два вида ссылок на ячейки: относительные и абсолютные. При копировании формулы эти ссылки ведут себя по-разному: относительные изменяются, абсолютные остаются постоянными.

Все ссылки на ячейки программа считает относительными, если пользователем не задано другое условие. С помощью относительных ссылок можно размножить одну и ту же формулу на несколько строк или столбцов.

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

2. Вспомним из математики: чтобы найти стоимость нескольких единиц товара, нужно цену за 1 единицу умножить на количество. Для вычисления стоимости введем формулу в ячейку D2: = цена за единицу * количество. Константы формулы – ссылки на ячейки с соответствующими значениями.

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

3. Нажимаем ВВОД – программа отображает значение умножения. Те же манипуляции необходимо произвести для всех ячеек. Как в Excel задать формулу для столбца: копируем формулу из первой ячейки в другие строки. Относительные ссылки – в помощь.

Находим в правом нижнем углу первой ячейки столбца маркер автозаполнения. Нажимаем на эту точку левой кнопкой мыши, держим ее и «тащим» вниз по столбцу.

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

Отпускаем кнопку мыши – формула скопируется в выбранные ячейки с относительными ссылками. То есть в каждой ячейке будет своя формула со своими аргументами.

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

Ссылки в ячейке соотнесены со строкой.

Формула с абсолютной ссылкой ссылается на одну и ту же ячейку. То есть при автозаполнении или копировании константа остается неизменной (или постоянной).

Чтобы указать Excel на абсолютную ссылку, пользователю необходимо поставить знак доллара ($). Проще всего это сделать с помощью клавиши F4.

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

2. Воспользуемся функцией автозаполнения. Кнопка находится на вкладке «Главная» в группе инструментов «Редактирование».

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

3. После нажатия на значок «Сумма» (или комбинации клавиш ALT+«=») слаживаются выделенные числа и отображается результат в пустой ячейке.

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

Сделаем еще один столбец, где рассчитаем долю каждого товара в общей стоимости. Для этого нужно:

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

2. Чтобы получить проценты в Excel, не обязательно умножать частное на 100. Выделяем ячейку с результатом и нажимаем «Процентный формат». Или нажимаем комбинацию горячих клавиш: CTRL+SHIFT+5

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

3. Копируем формулу на весь столбец: меняется только первое значение в формуле (относительная ссылка). Второе (абсолютная ссылка) остается прежним. Проверим правильность вычислений – найдем итог. 100%. Все правильно.

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

При создании формул используются следующие форматы абсолютных ссылок:

КАК СОСТАВИТЬ ТАБЛИЦУ В EXCEL С ФОРМУЛАМИ

Чтобы сэкономить время при введении однотипных формул в ячейки таблицы, применяются маркеры автозаполнения. Если нужно закрепить ссылку, делаем ее абсолютной. Для изменения значений при копировании относительной ссылки.

Простейшие формулы заполнения таблиц в Excel:

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

3.По такому же принципу можно заполнить, например, даты. Если промежутки между ними одинаковые – день, месяц, год. Введем в первую ячейку «окт.15», во вторую – «ноя.15». Выделим первые две ячейки и «протянем» за маркер вниз.

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

Как сделать змейку в excel. Смотреть фото Как сделать змейку в excel. Смотреть картинку Как сделать змейку в excel. Картинка про Как сделать змейку в excel. Фото Как сделать змейку в excel

Чтобы проверить правильность вставленной формулы, дважды щелкните по ячейке с результатом.

Ну вот! Теперь мы умеем создавать формулы и таблицы в Excel.

Дорогой читатель! Добавьте этот сайт в закладки своего браузера и поделитесь с друзьями ссылкой на этот сайт! Мы стараемся показывать здесь всякие хитрости и секреты. Пригодится точно.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *