Содержание
- 1 Правила оформления заказа
- 2 Правила учета товара в экселе
- 3 Что дает ведение учета магазина в Excel?
- 4 Составление таблицы учета товара Excel
- 4.1 Создание справочников
- 4.2 Формирование выпадающих списков
- 4.3 Формирование оборотной ведомости
- 4.4 Отслеживание критических остатков
- 5 Как вести складской учет в Excel?
- 6 Таблица Excel «Складской учет»
Вы составили список контактов в Excel, и теперь вы хотите, чтобы изменить порядок в алфавитном порядке, помещая все имена от А до Я (или наоборот)? Вы решили каталогизировать все ваши фильмы или книги в электронную таблицу Excel, и хотели бы, чтобы все названия в алфавитном порядке? У меня для вас новость.
Не могли бы вы, чтобы не иметь когда-нибудь замечали, но Excel включает в себя функцию, которая позволяет поместить содержимое выбранных ячеек в алфавитном порядке без перезаписи любого значения или перемещения ячеек вручную. Чтобы узнать, как вы, уделите несколько минут свободного времени и прочитать: Ниже описаны как своего рода в алфавитном порядке Excel шаг за шагом.
Для этого урока я использовал версию Excel 2016, которая доступна как для Windows, и MacOS, но информация в руководстве применяется ко всем выпускам Office, с вкладками интерфейса, поэтому для всех редакций офиса из 2007 год. У меня есть хорошее чтение и хорошую работу!
Тексты заказа в Excel для PC и Mac
Если вы хотите узнать, как сортировать в алфавитном порядке Excel, запустите программу через ее значок на рабочем столе или в меню Пуск> Все программы для Windows и выбрать, следует ли создать или открыть таблицу, в которой переупорядочить текст следовать порядку в алфавитном порядке.
На данный момент, удерживая левую кнопку мыши и выбрать все ячейки, которые необходимо отсортировать в алфавитном порядке. С другой стороны, если вы хотите изменить порядок значений во всей колонке таблицы, нажимает на кнопку, соответствующую последним (например, Е) или на какой-либо из клеток, которые он содержит.
Затем нажмите на кнопку Сортировка и фильтр, который находится в Excel Home вкладки (вверху справа, отмечен значком AZ) и выберите Сортировка от А до Я из меню, которое появляется на заказ клетки в алфавитном порядке.
Вам необходимо отсортировать значение столбца в обратном направлении, то есть от Я до А? Нет проблем. Вы можете легко получить этот результат, нажав Сортировка & фильтр Excel и выбрав Сортировать от Я до А из меню, которое выскакивает.
Если одно из значений будут заказаны в Excel есть также номера, перед выполнением процедуры я только что показал вам форматировать все значения в виде текста, в противном случае вы рискуете, что номера, сохраненные как числа сортируются перед тем, которые хранятся в виде текста. Для форматирования всех значений столбца в виде текста, выберите столбец в вопросе, вошел в Excel Home вкладку и выберите речевой текст из выпадающего меню General, расположенного в верхней части.
Если вы хотите изменить порядок все значения в столбце, кроме первого (который, как правило, название), обычно выбирают насущную колонку на письме (напр., A), нажмите на сортировку и фильтр Excel и выберите пункт Произвольный заказ из меню, которое появляется.
В открывшемся окне, поставьте галочку рядом с элементами данных с заголовками, убедитесь, что колонки и порядок выпадающего меню там выбраны, соответственно, название столбца будет заказана и возможность Z и нажмите кнопка OK, чтобы применить изменения.
Из окна относительного для персонализированных вы можете также установить различие между значениями в нижнем регистре и верхнем регистре (активации определенной функции от опций) меню и изменить критерий, по которому заказать выбранные значения (например, Cell цвета или цвет шрифта), используя выпадающее меню Сортировка.
Заказать строки в алфавитном порядке по Excel
Вы хотите, чтобы в алфавитном порядке значений, присутствующих в строке вместо столбца? Не волнуйтесь, вы можете сделать это.
Первый шаг, который вы должны принять это, чтобы выбрать строку, содержащую значения для переупорядоченные, нажав на соответствующий номер (например, 6), после чего необходимо нажать на кнопку Сортировка и фильтр Excel, и вы должны выбрать пункт Произвольный заказ из меню, которое появляется.
В открывшемся окне, нажимает кнопку Options, поставьте галочку рядом с заказной слева направо и нажмите на кнопке OK. Затем, выберите номер строки, чтобы быть заказана в раскрывающемся меню строки, убедитесь, что в раскрывающемся меню заказа нам вариант выбран От А до Я, и нажмите на кнопку OK, чтобы применить изменения.
Очевидно, что если вы не хотите, чтобы отсортировать значения ряда А до Я от Я до А, но вместо опции От А до Я Вы должны выбрать опцию От Z до A из выпадающего меню заказа.
Тексты заказа в Excel для смартфонов и планшетов
Я уверен, что вы хорошо знаете, Excel также доступна как приложение для смартфонов и планшетов. Она совместима с Android, IOS и Windows Phone, и вы можете использовать бесплатно на всех устройствах, которые имеют размер меньше, чем 10,1».
В этот момент возникает сомнение спонтанно: вы можете заказать с помощью текстов Excel для смартфонов и планшетов? Ответ: да. Есть все дополнительные опции, которые можно найти в настольной версии приложения, но ответ да.
Для сортировки в алфавитном порядке значений столбца в Excel для смартфона, откройте таблицу, на которой вы собираетесь работать, выберите столбец, который содержит значения, которые будут заказана (например, A) и давит на значок карандаша в верхней право. Затем выделите появится нижнее меню, выберите опцию Sort & Filter по нему и «кран» на Возрастание или по убыванию, в зависимости от того, если вы хотите изменить порядок значений от А до Z или Z до A.
На таблетках, интерфейс Excel практически идентичен настольный коллега приложения. Это означает, что иметь значения столбца в алфавитном порядке, вы должны сделать, это выбрать его, нажмите кнопку AZ значок, который расположен в правом верхнем углу и выберите Восходящий (AZ порядке) или по убыванию (ZA Order ) из меню, которое появляется.
Если какой-либо шаг не ясно, и / или хотите больше информации о том, как сортировать значения в листах Excel, см официальной документации приложения доступны на веб-сайте Microsoft.
Правила оформления заказа
Свод ключевых рекомендаций для формирования заказа на разработку
При оформлении заказа, пожалуйста, придерживайтесь указанных нами рекомендаций. Таким образом, вы сэкономите свое время, а разработка программы будет более эффективной и в максимально короткие сроки.
- Коротко (1-2 предложения) опишите цель/назначение создаваемой программы (что программа должна делать).
- Укажите, какие файлы используются в качестве исходных данных для создаваемой программы, их примеры и особенности.
- Конечный результат: примеры файлов, их описание и требования (пожелания) к функциональности.
- Логика работы программы: в какой последовательности что брать, какие данные пропускать, в какие ячейки вставлять значения, формулы расчета итогов и тд).
- Информация по срокам, контактные данные.
Да, скорее всего, и при реализации указанного примера будут вопросы и некоторые детали, требующие уточнения. Главное, что в целом понятна суть работы и есть ясная картина того, что надо делать.
При оформлении заказа, пожалуйста:
- прикрепляйте примеры файлов, из которых будет понятно, что есть и что необходимо получить в результате
- указывайте актуальную контактную информацию (номер телефона, ICQ, логин в скайпе, контактный email)
- указывайте сумму, которую вы готовы заплатить, если программа будет полностью соответствовать вашим пожеланиям
Внедрение современных WMS систем управления складом оправдано только при большом ассортименте и интенсивном товарообороте. При наличии всего нескольких операций в день и незначительной номенклатуре автоматизировать складские действия удобно с помощью таблицы учета товаров Excel. Функционал табличного редактора достаточен для упорядочивания приходно-расходных операций и вывода информации об остатках продукции.
Правила учета товара в экселе
Собственники магазинов зачастую сами пытаются организовать учет прихода и расхода товара в Excel. Для этого достаточно базовых умений работы с таблицами и минимальных усилий по самообучению нескольким новых функциям программы.
Учет товаров в эксель требует знания основных математических функций
Первоначальному формированию структуры файла Excel необходимо уделять особое внимание. Желательно предусмотреть в строке характеристик товаров большое количество столбцов для обозначения артикула, сорта, производителя и прочего. Ведь затем по каждому параметру можно будет настроить фильтр.
Не помешает наличие дополнительных полей и при записи приходно-расходных операций. В этом случае актуальны будут значения с ФИО ответственных за передачу продукции лиц, формой оплаты, датой истечения отсрочки и прочих.
При первоначальном заполнении таблицы учета прихода и расхода товара в Excel нужно провести в магазине инвентаризацию. После неё придется постоянно вести точные записи всех операций в хронологическом порядке. Ошибка в дате может привести к невозможности расчета формулы и сбою во всем файле. Поэтому ведением таблицы эксель для учета товара придется заниматься без перерыва.
Функционал таблицы учета товара в Excel, скачать которую можно в интернете, довольно слаб. Свободно распространяемые версии часто содержат скрытые формулы и им тяжело обучаться.
Интерфейс таблицы учета товара в эксель не должен быть сливающимся
Базовыми возможностями таблиц складского учета являются:
- Запись параметров приходных и расходных документов, количества указанного в них товара, его цены.
- Отображение текущих остатков по каждой номенклатурной позиции.
- Ведение справочников товаров для автоматизации заполнения граф.
- Формирование оборотной ведомости.
- Редактирование торговых наценок.
На этом основные функции таблиц эксель для учета товара заканчиваются. Однако используя уже представленные в файле данные, можно добиться расширения его возможностей. Несложные манипуляции помогут добавить следующее:
- Печать ордеров на основе выбранных документов.
- Отображение валовой прибыли за период.
- Возможность отображения скидок.
- Формирование актуального прайса на основе остатков товара.
- Ведение клиентской базы.
Некоторые предприниматели задумываются, как сделать таблицу учета товаров в Excel ещё более функциональной. Однако расширение её возможностей может привести к нестабильности, внутренним ошибкам и потере данных. Поэтому при увеличении потребности в мощности обработки информации рекомендуется использовать программы для учета товаров, разработанные специально для этих целей.
Составление таблицы учета товара Excel
Обычная таблица учета товара в Excel, шаблон которой будет разобран далее, представляет собой не самую сложную конструкцию. Для её грамотного составления понадобится 1-2 дня времени, наличие базы клиентов, товаров и остатков продукции. Не помешает привлечение к этому процессу опытных пользователей Excel, что значительно ускорит достижение цели и позволит избежать грубых ошибок.
Создание справочников
Первоочередной задачей автоматизации учета в магазине является составление справочников товаров, поставщиков, покупателей, форм оплаты и прочих повторяющихся в документах элементов. Для каждого из них можно использовать отдельный лист или уместить все данные на одном.
Справочник представляет собой расположенный построчно список с шаблонной информацией. В шапке указываются обозначения столбцов. Верхнюю строку нужно зафиксировать с помощью меню «Вид»-«Закрепить области». В этом случае обозначения столбцов будут всегда видны сверху, а список можно будет свободно перелистывать вниз.
Справочник покупателей в таблице эксель для учета товаров
Указанная форма справочника может быть и другой. Всё зависит от потребностей складского учета и желания предпринимателя заполнять те или иные графы. При наличии нескольких мест хранения товара будет целесообразно создать соответствующий справочник, чтобы знать остатки на каждом складе.
Справочник номенклатуры товаров в таблице эксель
Оформление справочников, их заголовков в таблице учета магазина рекомендуется осуществлять с использованием разных цветов и шрифтов. Это позволяет быстрее фиксировать взгляд на нужных данных и ускоряет работу.
Формирование выпадающих списков
Чтобы при заполнении приходных документов каждый раз не вводить наименование поставщика или товара, настраивается автоматизированный выбор этих значений из списка справочника. Для этого используется команда «Данные»-«Проверка данных». В появившемся окне выбираем тип данных «Список», а затем в поле источник указываем полный перечень значений из справочника. После этого в ячейке появится возможность выбирать параметр из выпадающего списка.
Меню выбора источника данных для выпадающего списка
Не нужно забывать настраивать формат отображаемых данных, чтобы понимать, в каких единицах измерения ведется учет товаров в эксель.
Однако при заполнении приходных или расходных документов некоторые значения всё же придется забивать руками.
Использование впадающего списка при заполнении номенклатуры продукции
К ним относятся:
- дата документа;
- количество товара;
- номер документа;
- прочие часто меняющиеся параметры.
При помощи встроенных в Excel инструментов можно добиться автоматического заполнения нескольких столбцов на основании данных справочника. Однако настроить этот функционал самостоятельно без глубоких знаний программы вряд ли удастся.
Самому же можно добавить элементарные формулы, например, указать столбец с суммарной стоимостью товара, умножив количество на цену.
Указанным выше образом формируются листы также «Приход» и «Расход». Их отдельное ведение удобно для последующего быстрого поиска нужного документа.
Формирование оборотной ведомости
В таблице учета товара Excel, пример которой приведен выше, не обойтись без формирования оборотной ведомости за период. Для этого используется функция СУММЕСЛИМН и другие математические алгоритмы. Инструкцию по работе с теми или иными инструментами Excel всегда можно посмотреть в интернете на официальном сайте программы.
Пример оборотной ведомости в таблице товарного учета
Сделать оборотную ведомость самостоятельно можно, но придется разобраться в некоторых функциях табличного редактора. Навыков программирования здесь не требуется.
На отдельном листе можно оформить информацию о товарных остатках, чтобы понимать необходимость закупки той или иной позиции ассортимента.
Отслеживание критических остатков
Ведение учета товара в магазине в Excel можно настроить таким образом, чтобы на листе с остатками продукции выводилась информация и о необходимости закупки той или иной позиции ассортимента. Далее будет рассмотрен простейший пример, как оформить это в табличном редакторе.
Автоматическое определение экселем необходимости пополнения складских запасов
В предложенном примере имеется три места хранения товара с указанием остатков в каждом из них. С помощью функции ЕСЛИ(ИЛИ…) можно настроить автоматическую проверку соблюдения нормы запаса по каждому складу. Итоговая формула будет выглядеть следующим образом:
ЕСЛИ(ИЛИ(C3
Складской учет в Excel подходит для любой торговой или производственной организации, где важно учитывать количество сырья и материалов, готовой продукции. С этой целью предприятие ведет складской учет. Крупные фирмы, как правило, закупают готовые решения для ведения учета в электронном виде. Вариантов сегодня предлагается масса, для различных направлений деятельности.
На малых предприятиях движение товаров контролируют своими силами. С этой целью можно использовать таблицы Excel. Функционала данного инструмента вполне достаточно. Ознакомимся с некоторыми возможностями и самостоятельно составим свою программу складского учета в Excel.
В конце статьи можно скачать программу бесплатно, которая здесь разобрана и описана.
Как вести складской учет в Excel?
Любое специализированное решение для складского учета, созданное самостоятельно или приобретенное, будет хорошо работать только при соблюдении основных правил. Если пренебречь этими принципами вначале, то впоследствии работа усложнится.
- Заполнять справочники максимально точно и подробно. Если это номенклатура товаров, то необходимо вносить не только названия и количество. Для корректного учета понадобятся коды, артикулы, сроки годности (для отдельных производств и предприятий торговли) и т.п.
- Начальные остатки вводятся в количественном и денежном выражении. Имеет смысл перед заполнением соответствующих таблиц провести инвентаризацию.
- Соблюдать хронологию в регистрации операций. Вносить данные о поступлении продукции на склад следует раньше, чем об отгрузке товара покупателю.
- Не брезговать дополнительной информацией. Для составления маршрутного листа водителю нужна дата отгрузки и имя заказчика. Для бухгалтерии – способ оплаты. В каждой организации – свои особенности. Ряд данных, внесенных в программу складского учета в Excel, пригодится для статистических отчетов, начисления заработной платы специалистам и т.п.
Однозначно ответить на вопрос, как вести складской учет в Excel, невозможно. Необходимо учесть специфику конкретного предприятия, склада, товаров. Но можно вывести общие рекомендации:
- Для корректного ведения складского учета в Excel нужно составить справочники. Они могут занять 1-3 листа. Это справочник «Поставщики», «Покупатели», «Точки учета товаров». В небольшой организации, где не так много контрагентов, справочники не нужны. Не нужно и составлять перечень точек учета товаров, если на предприятии только один склад и/или один магазин.
- При относительно постоянном перечне продукции имеет смысл сделать номенклатуру товаров в виде базы данных. Впоследствии приход, расход и отчеты заполнять со ссылками на номенклатуру. Лист «Номенклатура» может содержать наименование товара, товарные группы, коды продукции, единицы измерения и т.п.
- Поступление товаров на склад учитывается на листе «Приход». Выбытие – «Расход». Текущее состояние – «Остатки» («Резерв»).
- Итоги, отчет формируется с помощью инструмента «Сводная таблица».
Чтобы заголовки каждой таблицы складского учета не убегали, имеет смысл их закрепить. Делается это на вкладке «Вид» с помощью кнопки «Закрепить области».
Теперь независимо от количества записей пользователь будет видеть заголовки столбцов.
Таблица Excel «Складской учет»
Рассмотрим на примере, как должна работать программа складского учета в Excel.
Делаем «Справочники».
Для данных о поставщиках:
* Форма может быть и другой.
Для данных о покупателях:
* Обратите внимание: строка заголовков закреплена. Поэтому можно вносить сколько угодно данных. Названия столбцов будут видны.
Для аудита пунктов отпуска товаров:
Еще раз повторимся: имеет смысл создавать такие справочники, если предприятие крупное или среднее.
Можно сделать на отдельном листе номенклатуру товаров:
В данном примере в таблице для складского учета будем использовать выпадающие списки. Поэтому нужны Справочники и Номенклатура: на них сделаем ссылки.
Диапазону таблицы «Номенклатура» присвоим имя: «Таблица1». Для этого выделяем диапазон таблицы и в поле имя (напротив строки формул) вводим соответствующие значение. Также нужно присвоить имя: «Таблица2» диапазону таблицы «Поставщики». Это позволит удобно ссылаться на их значения.
Для фиксации приходных и расходных операций заполняем два отдельных листа.
Делаем шапку для «Прихода»:
Следующий этап – автоматизация заполнения таблицы! Нужно сделать так, чтобы пользователь выбирал из готового списка наименование товара, поставщика, точку учета. Код поставщика и единица измерения должны отображаться автоматически. Дата, номер накладной, количество и цена вносятся вручную. Программа Excel считает стоимость.
Приступим к решению задачи. Сначала все справочники отформатируем как таблицы. Это нужно для того, чтобы впоследствии можно было что-то добавлять, менять.
Создаем выпадающий список для столбца «Наименование». Выделяем столбец (без шапки). Переходим на вкладку «Данные» — инструмент «Проверка данных».
В поле «Тип данных» выбираем «Список». Сразу появляется дополнительное поле «Источник». Чтобы значения для выпадающего списка брались с другого листа, используем функцию: =ДВССЫЛ(«номенклатура!$A$4:$A$8»).
Теперь при заполнении первого столбца таблицы можно выбирать название товара из списка.
Автоматически в столбце «Ед. изм.» должно появляться соответствующее значение. Сделаем с помощью функции ВПР и ЕНД (она будет подавлять ошибку в результате работы функции ВПР при ссылке на пустую ячейку первого столбца). Формула: .
По такому же принципу делаем выпадающий список и автозаполнение для столбцов «Поставщик» и «Код».
Также формируем выпадающий список для «Точки учета» — куда отправили поступивший товар. Для заполнения графы «Стоимость» применяем формулу умножения (= цена * количество).
Формируем таблицу «Расход товаров».
Выпадающие списки применены в столбцах «Наименование», «Точка учета отгрузки, поставки», «Покупатель». Единицы измерения и стоимость заполняются автоматически с помощью формул.
Делаем «Оборотную ведомость» («Итоги»).
На начало периода выставляем нули, т.к. складской учет только начинает вестись. Если ранее велся, то в этой графе будут остатки. Наименования и единицы измерения берутся из номенклатуры товаров.
Столбцы «Поступление» и «Отгрузки» заполняется с помощью функции СУММЕСЛИМН. Остатки считаем посредством математических операторов.
Скачать программу складского учета (готовый пример составленный по выше описанной схеме).
Вот и готова самостоятельно составленная программа.
Содержание
- Применение инструментов заполнения
- Способ 1: встроенный объект для ввода данных Excel
- Способ 2: создание пользовательской формы
- Вопросы и ответы
Для облегчения ввода данных в таблицу в Excel можно воспользоваться специальными формами, которые помогут ускорить процесс заполнения табличного диапазона информацией. В Экселе имеется встроенный инструмент позволяющий производить заполнение подобным методом. Также пользователь может создать собственный вариант формы, которая будет максимально адаптирована под его потребности, применив для этого макрос. Давайте рассмотрим различные варианты использования этих полезных инструментов заполнения в Excel.
Применение инструментов заполнения
Форма заполнения представляет собой объект с полями, наименования которых соответствуют названиям колонок столбцов заполняемой таблицы. В эти поля нужно вводить данные и они тут же будут добавляться новой строкой в табличный диапазон. Форма может выступать как в виде отдельного встроенного инструмента Excel, так и располагаться непосредственно на листе в виде его диапазона, если она создана самим пользователем.
Теперь давайте рассмотрим, как пользоваться этими двумя видами инструментов.
Способ 1: встроенный объект для ввода данных Excel
Прежде всего, давайте узнаем, как применять встроенную форму для ввода данных Excel.
- Нужно отметить, что по умолчанию значок, который её запускает, скрыт и его нужно активировать. Для этого переходим во вкладку «Файл», а затем щелкаем по пункту «Параметры».
- В открывшемся окне параметров Эксель перемещаемся в раздел «Панель быстрого доступа». Большую часть окна занимает обширная область настроек. В левой её части находятся инструменты, которые могут быть добавлены на панель быстрого доступа, а в правой – уже присутствующие.
В поле «Выбрать команды из» устанавливаем значение «Команды не на ленте». Далее из списка команд, расположенного в алфавитном порядке, находим и выделяем позицию «Форма…». Затем жмем на кнопку «Добавить».
- После этого нужный нам инструмент отобразится в правой части окна. Жмем на кнопку «OK».
- Теперь данный инструмент располагается в окне Excel на панели быстрого доступа, и мы им можем воспользоваться. Он будет присутствовать при открытии любой книги данным экземпляром Excel.
- Теперь, чтобы инструмент понял, что именно ему нужно заполнять, следует оформить шапку таблицы и записать любое значение в ней. Пусть табличный массив у нас будет состоять из четырех столбцов, которые имеют названия «Наименование товара», «Количество», «Цена» и «Сумма». Вводим данные названия в произвольный горизонтальный диапазон листа.
- Также, чтобы программа поняла, с каким именно диапазонам ей нужно будет работать, следует ввести любое значение в первую строку табличного массива.
- После этого выделяем любую ячейку заготовки таблицы и щелкаем на панели быстрого доступа по значку «Форма…», который мы ранее активировали.
- Итак, открывается окно указанного инструмента. Как видим, данный объект имеет поля, которые соответствуют названиям столбцов нашего табличного массива. При этом первое поле уже заполнено значением, так как мы его ввели вручную на листе.
- Вводим значения, которые считаем нужными и в остальные поля, после чего жмем на кнопку «Добавить».
- После этого, как видим, в первую строку таблицы были автоматически перенесены введенные значения, а в форме произошел переход к следующему блоку полей, который соответствуют второй строке табличного массива.
- Заполняем окно инструмента теми значениями, которые хотим видеть во второй строке табличной области, и снова щелкаем по кнопке «Добавить».
- Как видим, значения второй строчки тоже были добавлены, причем нам даже не пришлось переставлять курсор в самой таблице.
- Таким образом, заполняем табличный массив всеми значениями, которые хотим в неё ввести.
- Кроме того, при желании, можно производить навигацию по ранее введенным значениям с помощью кнопок «Назад» и «Далее» или вертикальной полосы прокрутки.
- При необходимости можно откорректировать любое значение в табличном массиве, изменив его в форме. Чтобы изменения отобразились на листе, после внесения их в соответствующий блок инструмента, жмем на кнопку «Добавить».
- Как видим, изменение сразу произошло и в табличной области.
- Если нам нужно удалить, какую-то строчку, то через кнопки навигации или полосу прокрутки переходим к соответствующему ей блоку полей в форме. После этого щелкаем по кнопке «Удалить» в окошке инструмента.
- Открывается диалоговое окно предупреждения, в котором сообщается, что строка будет удалена. Если вы уверены в своих действиях, то жмите на кнопку «OK».
- Как видим, строчка была извлечена из табличного диапазона. После того, как заполнение и редактирование закончено, можно выходить из окна инструмента, нажав на кнопку «Закрыть».
- После этого для предания табличному массиву более наглядного визуального вида можно произвести форматирование.
Способ 2: создание пользовательской формы
Кроме того, с помощью макроса и ряда других инструментов существует возможность создать собственную пользовательскую форму для заполнения табличной области. Она будет создаваться прямо на листе, и представлять собой её диапазон. С помощью данного инструмента пользователь сам сможет реализовать те возможности, которые считает нужными. По функционалу он практически ни в чем не будет уступать встроенному аналогу Excel, а кое в чем, возможно, превосходить его. Единственный недостаток состоит в том, что для каждого табличного массива придется составлять отдельную форму, а не применять один и тот же шаблон, как это возможно при использовании стандартного варианта.
- Как и в предыдущем способе, прежде всего, нужно составить шапку будущей таблицы на листе. Она будет состоять из пяти ячеек с именами: «№ п/п», «Наименование товара», «Количество», «Цена», «Сумма».
- Далее нужно из нашего табличного массива сделать так называемую «умную» таблицу, с возможностью автоматического добавления строчек при заполнении соседних диапазонов или ячеек данными. Для этого выделяем шапку и, находясь во вкладке «Главная», жмем на кнопку «Форматировать как таблицу» в блоке инструментов «Стили». После этого открывается список доступных вариантов стилей. На функционал выбор одного из них никак не повлияет, поэтому выбираем просто тот вариант, который считаем более подходящим.
- Затем открывается небольшое окошко форматирования таблицы. В нем указан диапазон, который мы ранее выделили, то есть, диапазон шапки. Как правило, в данном поле заполнено все верно. Но нам следует установить галочку около параметра «Таблица с заголовками». После этого жмем на кнопку «OK».
- Итак, наш диапазон отформатирован, как «умная» таблица, свидетельством чему является даже изменение визуального отображения. Как видим, помимо прочего, около каждого названия заголовка столбцов появились значки фильтрации. Их следует отключить. Для этого выделяем любую ячейку «умной» таблицы и переходим во вкладку «Данные». Там на ленте в блоке инструментов «Сортировка и фильтр» щелкаем по значку «Фильтр».
Существует ещё один вариант отключения фильтра. При этом не нужно даже будет переходить на другую вкладку, оставаясь во вкладке «Главная». После выделения ячейки табличной области на ленте в блоке настроек «Редактирование» щелкаем по значку «Сортировка и фильтр». В появившемся списке выбираем позицию «Фильтр».
- Как видим, после этого действия значки фильтрации исчезли из шапки таблицы, как это и требовалось.
- Затем нам следует создать саму форму ввода данных. Она тоже будет представлять собой своего рода табличный массив, состоящий из двух столбцов. Наименования строк данного объекта будут соответствовать именам столбцов основной таблицы. Исключение составляют столбцы «№ п/п» и «Сумма». Они будут отсутствовать. Нумерация первого из них будет происходить при помощи макроса, а расчет значений во втором будет производиться путем применения формулы умножения количества на цену.
Второй столбец объекта ввода данных оставим пока что пустым. Непосредственно в него позже будут вводиться значения для заполнения строк основного табличного диапазона.
- После этого создаем ещё одну небольшую таблицу. Она будет состоять из одного столбца и в ней разместится список товаров, которые мы будем выводить во вторую колонку основной таблицы. Для наглядности ячейку с заголовком данного перечня («Список товаров») можно залить цветом.
- Затем выделяем первую пустую ячейку объекта ввода значений. Переходим во вкладку «Данные». Щелкаем по значку «Проверка данных», который размещен на ленте в блоке инструментов «Работа с данными».
- Запускается окно проверки вводимых данных. Кликаем по полю «Тип данных», в котором по умолчанию установлен параметр «Любое значение».
- Из раскрывшихся вариантов выбираем позицию «Список».
- Как видим, после этого окно проверки вводимых значений несколько изменило свою конфигурацию. Появилось дополнительное поле «Источник». Щелкаем по пиктограмме справа от него левой клавишей мыши.
- Затем окно проверки вводимых значений сворачивается. Выделяем курсором с зажатой левой клавишей мыши перечень данных, которые размещены на листе в дополнительной табличной области «Список товаров». После этого опять жмем на пиктограмму справа от поля, в котором появился адрес выделенного диапазона.
- Происходит возврат к окошку проверки вводимых значений. Как видим, координаты выделенного диапазона в нем уже отображены в поле «Источник». Кликаем по кнопке «OK» внизу окна.
- Теперь справа от выделенной пустой ячейки объекта ввода данных появилась пиктограмма в виде треугольника. При клике на неё открывается выпадающий список, состоящий из названий, которые подтягиваются из табличного массива «Список товаров». Произвольные данные в указанную ячейку теперь внести невозможно, а только можно выбрать из представленного списка нужную позицию. Выбираем пункт в выпадающем списке.
- Как видим, выбранная позиция тут же отобразилась в поле «Наименование товара».
- Далее нам нужно будет присвоить имена тем трем ячейкам формы ввода, куда мы будем вводить данные. Выделяем первую ячейку, где уже установлено в нашем случае наименование «Картофель». Далее переходим в поле наименования диапазонов. Оно расположено в левой части окна Excel на том же уровне, что и строка формул. Вводим туда произвольное название. Это может быть любое наименование на латинице, в котором нет пробелов, но лучше все-таки использовать названия близкие к решаемым данным элементом задачам. Поэтому первую ячейку, в которой содержится название товара, назовем «Name». Пишем данное наименование в поле и жмем на клавишу Enter на клавиатуре.
- Точно таким же образом присваиваем ячейке, в которую будем вводить количество товара, имя «Volum».
- А ячейке с ценой – «Price».
- После этого точно таким же образом даем название всему диапазону из вышеуказанных трех ячеек. Прежде всего, выделим, а потом дадим ему наименование в специальном поле. Пусть это будет имя «Diapason».
- После последнего действия обязательно сохраняем документ, чтобы названия, которые мы присвоили, смог воспринимать макрос, созданный нами в дальнейшем. Для сохранения переходим во вкладку «Файл» и кликаем по пункту «Сохранить как…».
- В открывшемся окне сохранения в поле «Тип файлов» выбираем значение «Книга Excel с поддержкой макросов (.xlsm)». Далее жмем на кнопку «Сохранить».
- Затем вам следует активировать работу макросов в своей версии Excel и включить вкладку «Разработчик», если вы это до сих пор не сделали. Дело в том, что обе эти функции по умолчанию в программе отключены, и их активацию нужно выполнять принудительно в окне параметров Excel.
- После того, как вы сделали это, переходим во вкладку «Разработчик». Кликаем по большому значку «Visual Basic», который расположен на ленте в блоке инструментов «Код».
- Последнее действие приводит к тому, что запускается редактор макросов VBA. В области «Project», которая расположена в верхней левой части окна, выделяем имя того листа, где располагаются наши таблицы. В данном случае это «Лист 1».
- После этого переходим к левой нижней области окна под названием «Properties». Тут расположены настройки выделенного листа. В поле «(Name)» следует заменить кириллическое наименование («Лист1») на название, написанное на латинице. Название можно дать любое, которое вам будет удобнее, главное, чтобы в нем были исключительно символы латиницы или цифры и отсутствовали другие знаки или пробелы. Именно с этим именем будет работать макрос. Пусть в нашем случае данным названием будет «Producty», хотя вы можете выбрать и любое другое, соответствующее условиям, которые были описаны выше.
В поле «Name» тоже можно заменить название на более удобное. Но это не обязательно. При этом допускается использование пробелов, кириллицы и любых других знаков. В отличие от предыдущего параметра, который задает наименование листа для программы, данный параметр присваивает название листу, видимое пользователю на панели ярлыков.
Как видим, после этого автоматически изменится и наименование Листа 1 в области «Project», на то, которое мы только что задали в настройках.
- Затем переходим в центральную область окна. Именно тут нам нужно будет записать сам код макроса. Если поле редактора кода белого цвета в указанной области не отображается, как в нашем случае, то жмем на функциональную клавишу F7 и оно появится.
- Теперь для конкретно нашего примера нужно записать в поле следующий код:
Sub DataEntryForm()
Dim nextRow As Long
nextRow = Producty.Cells(Producty.Rows.Count, 2).End(xlUp).Offset(1, 0).Row
With Producty
If .Range("A2").Value = "" And .Range("B2").Value = "" Then
nextRow = nextRow - 1
End If
Producty.Range("Name").Copy
.Cells(nextRow, 2).PasteSpecial Paste:=xlPasteValues
.Cells(nextRow, 3).Value = Producty.Range("Volum").Value
.Cells(nextRow, 4).Value = Producty.Range("Price").Value
.Cells(nextRow, 5).Value = Producty.Range("Volum").Value * Producty.Range("Price").Value
.Range("A2").Formula = "=IF(ISBLANK(B2), """", COUNTA($B$2:B2))"
If nextRow > 2 Then
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A" & nextRow)
Range("A2:A" & nextRow).Select
End If
.Range("Diapason").ClearContents
End With
End Sub
Но этот код не универсальный, то есть, он в неизменном виде подходит только для нашего случая. Если вы хотите его приспособить под свои потребности, то его следует соответственно модифицировать. Чтобы вы смогли сделать это самостоятельно, давайте разберем, из чего данный код состоит, что в нем следует заменить, а что менять не нужно.
Итак, первая строка:
Sub DataEntryForm()
«DataEntryForm» — это название самого макроса. Вы можете оставить его как есть, а можете заменить на любое другое, которое соответствует общим правилам создания наименований макросов (отсутствие пробелов, использование только букв латинского алфавита и т.д.). Изменение наименования ни на что не повлияет.
Везде, где встречается в коде слово «Producty» вы должны его заменить на то наименование, которое ранее присвоили для своего листа в поле «(Name)» области «Properties» редактора макросов. Естественно, это нужно делать только в том случае, если вы назвали лист по-другому.
Теперь рассмотрим такую строку:
nextRow = Producty.Cells(Producty.Rows.Count, 2).End(xlUp).Offset(1, 0).Row
Цифра «2» в данной строчке означает второй столбец листа. Именно в этом столбце находится колонка «Наименование товара». По ней мы будем считать количество рядов. Поэтому, если в вашем случае аналогичный столбец имеет другой порядок по счету, то нужно ввести соответствующее число. Значение «End(xlUp).Offset(1, 0).Row» в любом случае оставляем без изменений.
Далее рассмотрим строку
If .Range("A2").Value = "" And .Range("B2").Value = "" Then
«A2» — это координаты первой ячейки, в которой будет выводиться нумерация строк. «B2» — это координаты первой ячейки, по которой будет производиться вывод данных («Наименование товара»). Если они у вас отличаются, то введите вместо этих координат свои данные.
Переходим к строке
Producty.Range("Name").Copy
В ней параметр «Name» означат имя, которое мы присвоили полю «Наименование товара» в форме ввода.
В строках
.Cells(nextRow, 2).PasteSpecial Paste:=xlPasteValues
.Cells(nextRow, 3).Value = Producty.Range("Volum").Value
.Cells(nextRow, 4).Value = Producty.Range("Price").Value
.Cells(nextRow, 5).Value = Producty.Range("Volum").Value * Producty.Range("Price").Value
наименования «Volum» и «Price» означают названия, которые мы присвоили полям «Количество» и «Цена» в той же форме ввода.
В этих же строках, которые мы указали выше, цифры «2», «3», «4», «5» означают номера столбцов на листе Excel, соответствующих колонкам «Наименование товара», «Количество», «Цена» и «Сумма». Поэтому, если в вашем случае таблица сдвинута, то нужно указать соответствующие номера столбцов. Если столбцов больше, то по аналогии нужно добавить её строки в код, если меньше – то убрать лишние.
В строке производится умножение количества товара на его цену:
.Cells(nextRow, 5).Value = Producty.Range("Volum").Value * Producty.Range("Price").Value
Результат, как видим из синтаксиса записи, будет выводиться в пятый столбец листа Excel.
В этом выражении выполняется автоматическая нумерация строк:
If nextRow > 2 Then
Range("A2").Select
Selection.AutoFill Destination:=Range("A2:A" & nextRow)
Range("A2:A" & nextRow).Select
End If
Все значения «A2» означают адрес первой ячейки, где будет производиться нумерация, а координаты «A» — адрес всего столбца с нумерацией. Проверьте, где именно будет выводиться нумерация в вашей таблице и измените данные координаты в коде, если это необходимо.
В строке производится очистка диапазона формы ввода данных после того, как информация из неё была перенесена в таблицу:
.Range("Diapason").ClearContents
Не трудно догадаться, что («Diapason») означает наименование того диапазона, который мы ранее присвоили полям для ввода данных. Если вы дали им другое наименование, то в этой строке должно быть вставлено именно оно.
Дальнейшая часть кода универсальна и во всех случаях будет вноситься без изменений.
После того, как вы записали код макроса в окно редактора, следует нажать на значок сохранения в виде дискеты в левой части окна. Затем можно его закрывать, щелкнув по стандартной кнопке закрытия окон в правом верхнем углу.
- После этого возвращаемся на лист Excel. Теперь нам следует разместить кнопку, которая будет активировать созданный макрос. Для этого переходим во вкладку «Разработчик». В блоке настроек «Элементы управления» на ленте кликаем по кнопке «Вставить». Открывается перечень инструментов. В группе инструментов «Элементы управления формы» выбираем самый первый – «Кнопка».
- Затем с зажатой левой клавишей мыши обводим курсором область, где хотим разместить кнопку запуска макроса, который будет производить перенос данных из формы в таблицу.
- После того, как область обведена, отпускаем клавишу мыши. Затем автоматически запускается окно назначения макроса объекту. Если в вашей книге применяется несколько макросов, то выбираем из списка название того, который мы выше создавали. У нас он называется «DataEntryForm». Но в данном случае макрос один, поэтому просто выбираем его и жмем на кнопку «OK» внизу окна.
- После этого можно переименовать кнопку, как вы захотите, просто выделив её текущее название.
В нашем случае, например, логично будет дать ей имя «Добавить». Переименовываем и кликаем мышкой по любой свободной ячейке листа.
- Итак, наша форма полностью готова. Проверим, как она работает. Вводим в её поля необходимые значения и жмем на кнопку «Добавить».
- Как видим, значения перемещены в таблицу, строке автоматически присвоен номер, сумма посчитана, поля формы очищены.
- Повторно заполняем форму и жмем на кнопку «Добавить».
- Как видим, и вторая строка также добавлена в табличный массив. Это означает, что инструмент работает.
Читайте также:
Как создать макрос в Excel
Как создать кнопку в Excel
В Экселе существует два способа применения формы заполнения данными: встроенная и пользовательская. Применение встроенного варианта требует минимум усилий от пользователя. Его всегда можно запустить, добавив соответствующий значок на панель быстрого доступа. Пользовательскую форму нужно создавать самому, но если вы хорошо разбираетесь в коде VBA, то сможете сделать этот инструмент максимально гибким и подходящим под ваши нужды.
Будем считать, что наша условная организация занимается поставками покупателям дорогостоящей строительной техники. Кроме непосредственно поставок, еще один из участков деятельности связан с ее ремонтом. Разрабатываемая далее книга Microsoft Excel будет включать несколько листов данных и несколько листов управления. Исходная ситуация такова: мы располагаем рядом клиентов (заказчиков), которые обращаются к нам по поводу ремонта проданной им техники (ремонт в течение гарантийного срока является вполне нормальным делом).
Технически сам ремонт, как правило, связан с заменой большого количества деталей. С учетом этого, очевидно, что существуют определенные трудности работы персонала, связанные с обеспечением хранения и извлечения необходимой информации по договорам с клиентами, а также с формированием отчетов по клиентам и договорам. В рабочей книге Microsoft Excel мы разработаем единую информационную базу, которая позволит существенно облегчить труд сотрудников офиса. Это облегчение работы будет достигнуто за счет размещения в книге элементов управления и последующего их программирования.
Итак, начнем работу с создания новой рабочей книги Microsoft Excel. Один из ее листов показан на рис. 3.1. В нем размещается справочная информация по нашим заказчикам (клиентам). Каждая строка на листе Клиенты представляет запись об одной из наших организаций-партнеров. Обратим внимание на то, что в дальнейшем в программных процедурах обращение к данному листу будет производиться по имени, поэтому следует присвоить ему имя Клиенты. Столбец Код предназначен для присвоения каждой фирме уникального кода (для того, чтобы однозначно идентифицировать каждую фирму). В целом информация, представленная в строках листа (см. рис. 3.1), достаточно стандартная: название, адрес, телефон, факс и ряд финансовых реквизитов.
Рис. 3.1. Справочная информация о клиентах
В верхней части листа располагается кнопка для ввода очередной записи о новой фирме. Конечно, пользователь, при появлении у нашей организации очередного партнера, может непосредственно внести информацию о нем в очередную свободную строку. Однако для удобства, с одной стороны, и контроля возможных технических ошибок, с другой, мы разработаем более удобную технологию.
К кнопке ввода нового клиента мы еще вернемся, а пока разберем следующий шаг, связанный с созданием формы ввода, которая приведена на рис. 3.2. От пользователя требуется внести данные в необходимые поля и щелкнуть на кнопке Внести для фиксации введенной информации на листе Клиенты. Это приведет к тому, что в очередную свободную строку листа будут внесены сведения по новой фирме. При этом процедура обработки щелчка на кнопке Внести предварительно проверит, встречался ли уже такой код у фирм. Если да, то ввод будет отменен. Также ввод будет отменен, если пользователь оставит поле пустым. Кроме того, процедура посмотрит: не является ли данная запись дублирующей (если уже имеется строка, включающая данное название фирмы, а также указанный адрес). И в этом случае ввод информации на лист Клиенты будет отменен.
Рис. 3.2. Форма ввода информации о клиентах
Таким образом, наша ближайшая цель — создать форму ввода (рис. 3.2) и расположить на ней необходимые элементы управления. С формами мы еще не сталкивались, поэтому рассмотрим процесс их создания более подробно. Для создания пользовательской формы необходимо перейти в окно редактора Visual Basic. Здесь требуется воспользоваться разделом UserForm в меню Insert (рис. 3.3). В результате на экране появится новая форма, которая фактически представляет собой контейнер для размещения на ней необходимых элементов управления.
Рис. 3.3. Пользовательская форма в среде Microsoft Visual Basic
У формы, как и у любого элемента управления, есть свойства. Для того чтобы открыть окно свойств, следует воспользоваться разделом Properties Window из меню View. Изменим значение Name на Client, а также значение свойства Caption — Форма для ввода нового клиента. В результате в заголовке формы будет отражен новый текст. Что касается свойства Name, то оно нам понадобится при работе с формой (при активизации формы).
Далее расположим на форме необходимые элементы управления. Для этого сначала необходимо отобразить на экране панель инструментов (View ► Toolbox). В соответствии с рис. 3.2 на форме нам следует разместить 7 элементов управления типа Label (надпись) и 7 элементов TextBox (текстовое окно). При этом значения свойства Name для надписей принципиального значения не имеют, так как программно мы обращаться к ним не будем. Для этих элементов выберите рассматриваемые значения произвольно (главное, чтобы не было повторяющихся имен — иначе среда Microsoft Visual Basic обратит на это внимание). Аналогичное свойство для текстовых окоп лам потребуется в программных процедурах, поэтому в табл. 3 приведены значения свойства Name текстовых окон, которые следует установить.
Таблица 3.1. Значения свойства Name текстовых окон
Подпись | Name |
---|---|
Код | Cod |
Название фирмы | Firma |
Адрес | Adress |
Телефон | Tel |
Факс | Fax |
ИНН | Inn |
КПП | Kpp |
От пользователя требуется внести информацию в текстовые окна, расположенные на форме, после чего щелкнуть на кнопке Внести. Это приводит к выполнению процедуры, которая должна предварительно проверить корректность вводимых данных. Если на листе запись с указанным кодом фирмы уже существует, то процедура обратит на это внимание. Также процедура обратит внимание, если на листе уже присутствует фирма с аналогичным названием и с тем же указанным адресом. Текст данной процедуры приведен в листинге 3.1.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
' Листинг 3.1. Обработка щелчка на кнопке Внести на форме Private Sub CommandButton1_Click() If Cod.Text = "" Then MsgBox ("Поле КОД необходимо заполнить") Exit Sub End If Nom = 0 While Worksheets("Клиенты").Cells(Nom + 2, 2).Value <> "" Nom = Nom + 1 Wend For i = 1 To Nom If CStr(Worksheets("Клиенты").Cells(i + 1, 2).Value = _ CStr(Firma.Text) And _ CStr(Worksheets("Клиенты").Cells(i + 1, 3).Value) = _ CStr(Adress.Text)) Then MsgBox ("Такой код фирмы уже встречался") Exit Sub End If Next Worksheets("Клиенты").Cells(i + 1, 1).Value = Cod.Text Worksheets("Клиенты").Cells(i + 1, 2).Value = Firma.Text Worksheets("Клиенты").Cells(i + 1, 3).Value = Adress.Text Worksheets("Клиенты").Cells(i + 1, 4).Value = Tel.Text Worksheets("Клиенты").Cells(i + 1, 5).Value = Fax.Text Worksheets("Клиенты").Cells(i + 1, 6).Value = Inn.Text Worksheets("Клиенты").Cells(i + 1, 7).Value = Kpp.Text MsgBox ("Информация внесена") Client.Hide End Sub |
Новый момент связал с предпоследней строкой текста в листинге 3.1. Здесь для формы Client применяется метод Hide, который приводит к закрытию этой формы. Разумеется, ее необходимо сначала отобразить, и об этом мы еще не упоминали. В листинге 3.2 приведена процедура, которая выполняется по щелчку на кнопке Ввести нового клиента (см. рис. 3.1). Здесь для отображения на экране формы Client используется метод Show.
1 2 3 4 |
' Листинг 3.2. Обработка щелчка на кнопке Ввести нового клиента Private Sub CommandButton1_Click() Client.Show End Sub |
На рис. 3.4 приведен результат заполнения формы данными об очередной фирме. Теперь щелчком на кнопке Внести это данные переносятся на текущий рабочий лист (в очередную свободную строку).
Рис. 3.4. Внесение информации о новом клиенте
Перейдем к разработке еще двух листов. Один из них под названием Номенклатура показан на рис. 3.5. В каждой строке листа располагается название конкретной запасной части. Значение в столбце Номер запчасти позволяет однозначно ее идентифицировать.
Рис. 3.5. Информация о номенклатуре
Лист Номенклатура является справочным и не содержит элементов управления. Технически пользователь просто вручную заполняет данный прайс-лист. Еще один лист, который также не содержит элементов управления, показан на рис. 3.6. Здесь содержится информация о заказах — названиях и их составе. Столбец А предназначен для уникального кода каждого заказа. Далее располагаются поля для отображения даты заказа и кода фирмы (по коду фирмы легко определить необходимые реквизиты организации).
Рис. 3.6. Лист для хранения информации о заказах
Начиная с пятого столбца размещается информация о запасных частях, которые входят в заказ. Структура этой информации выглядит следующим образом: в пятом столбце код запчасти, далее в шестом количество таких запчастей в заказе, затем в седьмом столбце код другой запчасти, и далее их количество. Таким образом, в каждой строке перечисляется все содержимое определенного заказа. Понятно, что вручную заполнять подобную информацию не слишком удобно. Для этого мы создадим специальный лист с необходимыми элементами управления. В результате будет обеспечено удобство для пользователя, а также контроль уникальности кода заказа. Лист, который будет выполнять необходимый «функционал», показан на рис. 3.7. В качестве названия листа выберем Бланк для нового заказа.
Рассмотрим организацию листа Бланк для нового заказа и техническую работу пользователя с ним. Ячейка C1 отводится для номера заказа. Ниже поясняющего текста Заказчик (расположенного в ячейке А1) располагается элемент управления «Поле со списком». В качестве значения свойства Name этого элемента управления выбрано Firma. Ниже поясняющего текста Список запчастей располагается еще один элемент управления «Поле со списком». В качестве значения свойства Name выбрано Spk.
Щелчком на определенной запчасти она включается в заказ, который формируется с 11-й строки на данном листе. Столбцы Номер запчасти, Наименование и Цена заполняются исходя из имеющейся информации на листе Номенклатура. Пользователю следует лишь внести количество единиц указанной детали в перечне запасных частей. Для этого предназначено текстовое окно (Name — Col) с надписью выше — Количество. После этого осталось щелкнуть на кнопке Включить (Name — InputNom), и в очередную свободную строку на данном листе запишется новая позиция заказа.
Рис. 3.7. Лист для формирования заказа
После того как список запасных частей таким образом заполнен и номер заказа указан, осталось щелкнуть на кнопке Включить в список заказов. В качестве значения свойства Name этой кнопки выбрано InputSpk. За счет программной процедуры это приводит к переносу информации о заказе на лист Названия заказов. Таким образом, теперь можно перейти к рассмотрению процедур, которые обеспечивают выполнение описанных действий. Когда пользователь в процессе работы с книгой переходит на лист Бланк для нового заказа, списки заказчиков и запасных частей должны быть заполнены. Проще всего это обеспечить с помощью процедуры, выполняемой при активизации листа, которая представлена в листинге 3.3.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
' Листинг 3.3. Процедура, выполняемая при активизации листа Private Sub Worksheet_Activate() Firma.Clear N = 0 While Worksheets("Клиенты").Cells(N + 2, 1).Value <> "" N = N + 1 Wend For i = 1 To N Firma.AddItem Worksheets("Клиенты").Cells(i + 2, 2).Value Next Spk.Clear N = 0 While Worksheets("Nomen").Cells(N + 2, 1).Value <> "" N = N + 1 Wend For i = 1 To N Spk.AddItem Worksheets("Nomen").Cells(i + 1, 1).Value + _ "" + Worksheets("Номенклатура").Cells(i + 1, 2).Value + "" + _ CStr(Worksheets("Номенклатура").Cells(i + 1, 3).Value) + "руб." Next End Sub |
Приведенная процедура заполнения полей со списками организаций и запчастей похожа на рассмотренные ранее примеры и не требует комментария. Более интересна следующая процедура (листинг 3.4), которая выполняется при щелчке на кнопке Включить.
1 2 3 4 5 6 7 8 9 10 11 12 |
' Листинг 3.4. Процедура обработки щелчка на кнопке Включить Private Sub InputNom_Click() Nom = Spk.ListIndex N = 0 While Cells(N + 11, 1).Value <> "" N = N + 1 Wend Cells(N + 11, 1) = Worksheets("Номенклатура").Cells(Spk.ListIndex + 2, 1) Cells(N + 11, 2) = Worksheets("Номенклатура").Cells(Spk.ListIndex + 2, 2) Cells(N + 11, 3) = Worksheets("Номенклатура").Cells(Spk.ListIndex + 2, 3) Cells(N + 11, 4) = Col.Text End Sub |
Здесь в переменную Nom заносится индекс (номер) элемента, который выделен в элементе управления «Поле со списком», отведенном для запасных частей. Далее подсчитывается число уже заполненных позиций в заказе — они располагаются начиная с 11-й строки. После этого в следующую свободную строку заносится очередная запись. При этом количество единиц указанной позиции заказа извлекается из содержимого текстового окна Col.
Теперь на очереди другая процедура (листинг 3.5), которая переносит информацию с листа Бланк для нового заказа на лист Названия заказов, о котором мы уже говорили. В начале процедуры InputSpk_Click() предварительно проверяется — внесена ли информация в ячейку C1. Далее производится поиск присутствия заказа с указанным на листе номером. В случае положительного ответа на этот вопрос процедура не производит запись, а возвращает пользователя к работе с листом формирования нового заказа. В случае уникальности нового номера заказа процедура последовательно переносит имеющуюся информацию в каталог заказов. Для формирования даты используется стандартная функция VBA Date.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
' Листинг 3.5. Процедура обработки щелчка на кнопке Включить в список заказов Private Sub InputSpk_Click() ' Номер потенциального заказа VerZakaz = CStr(Range("C1").Value) If VerZakaz = "" Then MsgBox ("Поле кода заказа необходимо заполнить") Exit Sub End If If Firma.ListIndex = -1 Then MsgBox ("Необходимо указать фирму") Exit Sub End If ' Извлечение информации о коде фирмы CodFirma = Worksheets("Клиенты").Cells(Firma.ListIndex + 2, 1).Value ' Подсчет числа имеющихся заказов N = 0 While Worksheets("Названия заказов").Cells(N + 2, 1).Value <> "" N = N + 1 Wend ' Проверка возможного повтора номера заказа For i = 1 To N CodList = Worksheets("Названия заказов").Cells(i + 1, 1).Value If CStr(CodList) = VerZakaz Then MsgBox ("Такой номер заказа уже встречался") Exit Sub End If Next ' Запись информации о данном заказе Worksheets("Названия заказов").Cells(N + 2, 1).Value = Range("C1").Value ' Использование стандартной функции для получения даты Worksheets("Названия заказов").Cells(N + 2, 2).Value = Date Worksheets("Названия заказов").Cells(N + 2, 3).Value = CodFirma ' Вводим переменную для подсчета суммы NDetal = 0 While Cells(NDetal + 11, 2).Value <> "" NDetal = NDetal + 1 Wend ' Подсчет числа деталей в заказе SymmaItog = 0 For i = 1 To NDetal Worksheets("Названия заказов").Cells(N + 2, 5 + (i - 1) * 2).Value = _ Cells(i + 10, 1).Value Worksheets("Названия заказов").Cells(N + 2, 5 + (i - 1) * 2 + 1).Value = _ Cells(i + 10, 4).Value SymmaItog = SymmaItog + CLng(Cells(i + 10, 4).Value) * _ CLng(Cells(i + 10, 3).Value) Next Worksheets("Названия заказов").Cells(N + 2, 4).Value = SymmaItog MsgBox ("Заказ включен") End Sub |
Таким образом, мы обеспечили удобный механизм внесения информации в лист Названия заказов. На рис. 3.8 показан результат ввода двух заказов на запасные части.
Рис. 3.8. Пример формирования заказов
Перейдем к отчетам, и один из них показан на рис. 3.9. На этом листе часть информации статична (заголовок и подписи столбцов), а ряд ячеек заполняется исходя из содержания конкретного заказа, которое зафиксировано на листе Названия заказов.
Рис. 3.9. Отчет о заказе
Нам требуется программно обеспечить заполнение ячеек листа, отводимых для номера заказа, заказчика, а также заполнение адреса, телефона и факса. Табличная часть на рис. 3.9 используется в случае, если число позиций в заказе не превышает трех. В противном случае данная табличная часть не заполняется, а создается другой документ — Приложение (рис. 3.10). Наша задача — обеспечить данные функциональные особенности разрабатываемой книги.
Рис. 3.10. Приложение к отчету о заказе
Для заполнения отчета о заказе (и при необходимости приложения к нему) па листе Названия заказов создадим кнопку Создать отчет (см. рис. 3.8). По нажатию этой кнопки будет открываться форма, где от пользователя требуется выбрать заказ, по которому необходимо сформировать отчет. На рис. 3.11 показана данная форма ввода в окне редактора Visual Basic.
Процедура, вызываемая щелчком на кнопке Создать отчет, представлена в листинге 3.6. Ее назначение — открыть форму, обеспечивающую необходимый интерфейс для формирования отчета (см. рис. 3.11).
1 2 3 4 |
' Листинг 3.6. Процедура обработки щелчка на кнопке Создать отчет Private Sub CommandButton1_Click() Zakaz.Show End Sub |
Рис. 3.11. Форма выбора заказа для отчета
В листинге 3.7 приведена процедура, которая выполняется при активизации формы. Ее назначение заключается в заполнении элемента управления «Поле со списком». При этом сначала подсчитывается количество заказов, уже имеющихся в базе данных. Информация о том, какая фирма его сделала, расположена на листе Клиенты. Поэтому для заполнения поля со списком на рис. 3.11 необходимо обратиться к информации о клиентах.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
' Листинг 3.7. Процедура, выполняемая при активизации формы Private Sub UserForm_Activate() ' Подсчет числа заказов Nom = 0 While Worksheets("Названия заказов").Cells(Nom + 2, 1).Value <> "" Nom = Nom + 1 Wend ' Подсчет числа фирм Nfir = 0 While Worksheets("Клиенты").Cells(Nfir + 2, 1).Value <> "" Nfir = Nfir + 1 Wend ' Очистка и последующее заполнение поля со списком Spk.Clear ' Перебор числа заказов For i = 1 To Nom ' Извлечение кода фирмы NomFirma = Worksheets("Названия заказов").Cells(i + 1, 3).Value For j = 1 To Nfir If NomFirma = Worksheets("Клиенты").Cells(j + 1, 1).Value Then Firma = Worksheets("Клиенты").Cells(j + 1, 2).Value ' При нахождении фирмы выход из цикла Exit For End If Next Spk.AddItem CStr(Worksheets("Названия заказов").Cells(i + 1, 1).Value) _ + " " + CStr(Worksheets("Названия заказов").Cells(i + 1, 2).Value) _ + " " + CStr(Firma) Next End Sub |
Теперь пользователь должен выбрать интересующую его фирму (рис. 3.12). Следующая процедура — обработка щелчка на кнопке Заполнить акт и приложение. Учитывая сложность полного программного кода, приведем его сначала для варианта заполнения только листа АКТ (листинг 3.8).
Рис. 3.12. Выбор заказа для отчета
В зависимости от количества позиций заказа процедура позволяет заполнить или только лист АКТ, или параллельно с актом еще и лист Приложение. В листинге 3.8 приведен первоначальный вариант, который приводит к заполнению только листа АКТ (в случае количества заявок не более трех).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
' Листинг 3.8. Процедура обработки щелчка на кнопке Заполнить акт и приложение Private Sub CommandButton1_Click() ' Определяем индекс выбранного заказа в списке NomSpk = Spk.ListIndex ' Подсчет количества деталей в выбранном заказе ColDet = 0 While Worksheets("Название заказа").Cells(NomSpk + 2, _ 5 + ColDet * 2).Value <> "" ColDet = ColDet + 1 Wend ' Подсчет количества позиций деталей по прайсу NPrais = 0 While Worksheets("Номенклатура").Cells(NPrais + 2, _ 1).Value <> "" NPrais = NPrais + 1 Wend ' Подсчет числа фирм NFirm = 0 While Worksheets("Клиенты").Cells(NFirm + 2, 1).Value <> "" NFirm = NFirm + 1 Wend ' Извлекаем код фирмы в выбранном заказе CodFirm = Worksheets("Название заказа").Cells(NomSpk + 2, 3).Value For i = 1 To NFirm ' Нахождение реквизитов фирмы по ее коду If CodFirm = Worksheets("Клиенты").Cells(i + 1, 1).Value Then Название заказа = Worksheets("Клиенты").Cells(i + 1, 2).Value Adr = Worksheets("Клиенты").Cells(i + 1, 3).Value Tel = Worksheets("Клиенты").Cells(i + 1, 4).Value Fax = Worksheets("Клиенты").Cells(i + 1, 5).Value Exit For End If Next ' Внесение найденных реквизитов в поля на листе АКТ Worksheets("Акт").Cells(6, 3).Value = Nazv Worksheets("Акт").Cells(7, 3).Value = "ADRES:" + Adr Worksheets("Акт").Cells(8, 3).Value = "telefon:" + Tel Worksheets("Акт").Cells(9, 3).Value = "phaks:" + Fax Worksheets("Акт").Cells(6, 5).Value = _ Worksheets("Название заказа").Cells(NomSpk + 2, 1) ' Очистка области для перечня запасных частей Worksheets("Акт").Range("A13:F15") = "" ' Заполнение табличной части листа АКТ If ColDet < 4 Then For i = 1 To ColDet ' Формирование порядкового номера перечня Worksheets("Акт").Cells(i + 12, 1).Value = i Worksheets("Акт").Cells(i + 12, 2).Value = _ Worksheets("Название заказа").Cells(NomSpk + 2, _ 5 + (i - 1) * 2).Value For j = 1 To NPrais If CStr(Worksheets("Акт").Cells(i + 12, 2).Value) = _ CStr(Worksheets("Номенклатура").Cells(j + 1, 1).Value) Then Nazvanie = CStr(Worksheets("Номенклатура").Cells(j + 1, 2).Value) Tarif = CStr(Worksheets("Номенклатура").Cells(j + 1, 3).Value) Exit For End If Next Worksheets("Акт").Cells(i + 12, 3).Value = Nazvanie Worksheets("Акт").Cells(i + 12, 5).Value = Tarif Worksheets("Акт").Cells(i + 12, 4).Value = _ Worksheets("Название заказа").Cells(NomSpk + 2, _ 5 + (i - 1) * 2 + 1).Value Worksheets("Акт").Cells(i + 12, 6).Value = Tarif * _ Worksheets("Акт").Cells(i + 12, 4).Value Next End If Hide End Sub |
На рис. 3.9 мы уже видели заполненный лист АКТ для небольшого (не превышающего трех) числа запасных частей в заказе. Следует обратить внимание на ряд фрагментов процедуры, приведенной в листинге 3.8. Так, из третьего столбца строки выбранного заказа извлекается код фирмы-заказчика:
1 |
CodFirm = Worksheets("Названия заказов").Cells(NomSpk + 2, 3).Value.
|
Далее по коду фирмы с листа Клиенты извлекается информация о заказчике, которая далее переносится на лист АКТ. После этого производится заполнение табличной части. Здесь мы реализовали только ситуацию, когда количество деталей не превышает трех:
С учетом ранее рассмотренной организации листа Клиенты информация о кодах запасных частей располагается начиная с 5-го столбца. Поэтому следующая конструкция позволяет получить данные о составе заказа:
1 2 |
Worksheets("Названия заказов").Cells(NomSpk + 2,
5 + (i - 1) * 2).Value.
|
После этого на листе Номенклатура по кодам запчастей производится поиск информации о запасных частях, данные о которых заносятся в табличную часть (см. рис. 3.9).
Теперь осталось добавить к рассмотренному программному коду ситуацию, когда число позиций деталей в заказе больше трех. По ранее сформулированному условию в этом случае требуется разнести информацию по двум листам АКТ и Приложение. На лист АКТ в этом случае вносится только заголовочная часть (название и реквизиты фирмы-заказчика), а перечень запасных деталей заносится на лист Приложение. В связи с этим процедуру обработки щелчка на кнопке Создать отчет необходимо дополнить (листинг 3.9).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
' Листинг 3.9. Изменение процедуры щелчка на кнопке Заполнить акт и приложение Private Sub CommandButton1_Click() ' Определяем индекс выбранного заказа в списке NomSpk = Spk.ListIndex ' Подсчет количества деталей в выбранном заказе ColDet = 0 While Worksheets("Названия заказов").Cells(NomSpk + 2, _ 5 + ColDet * 2).Value <> "" ColDet = ColDet + 1 Wend ' Подсчет количества позиций по прайсу NPrais = 0 While Worksheets("Номенклатура").Cells(NFirm + 2, 1).Value <> "" NPrais = NPrais + 1 Wend ' Подсчет числа фирм NFirm = 0 NFirm = NFirm + 1 Wend ' Извлекаем код фирмы в выбранном заказе CodFirm = Worksheets("Названия заказов").Cells(NomSpk + 2, 3).Value For i = 1 To NFirm ' Нахождение реквизитов фирмы по ее коду If CodFirm = Worksheets("Клиенты").Cells(i + 1, 1).Value Then Nazv = Worksheets("Клиенты").Cells(i + 1, 2).Value Adr = Worksheets("Клиенты").Cells(i + 1, 3).Value Tel = Worksheets("Клиенты").Cells(i + 1, 4).Value Fax = Worksheets("Клиенты").Cells(i + 1, 5).Value Exit For End If Next ' Внесение найденных реквизитов в поля на листе АКТ Worksheets("АКТ").Cells(6, 3).Value = Nazv Worksheets("АКТ").Cells(7, 3).Value = "Адрес:" + Adr Worksheets("АКТ").Cells(8, 3).Value = "Телефон:" + Tel Worksheets("АКТ").Cells(9, 3).Value = "Факс:" + Fax Worksheets("АКТ").Cells(6, 5).Value = _ Worksheets("Названия заказов").Cells(NomSpk + 2, 1) Worksheets("Приложение").Cells(1, 6).Value = _ Worksheets("Названия заказов").Cells(NomSpk + 2, 1) ' Очистка области для перечня запасных частей Worksheets("АКТ").Range("A13:F15") = "" Worksheets("Приложение").Range("A4:F100") = "" If ColDet < 4 Then For i = 1 To ColDet Worksheets("АКТ").Cells(i + 12, 1).Value = i Worksheets("АКТ").Cells(i + 12, 2).Value = _ Worksheets("Названия заказов").Cells(NomSpk + 2, _ 5 + (i - 1) * 2).Value For j = 1 To NPrais If CStr(Worksheets("АКТ").Cells(i + 12, 2).Value) = _ CStr(Worksheets("Номенклатура").Cells(j + 1, 1).Value) Then Nazvanie = CStr(Worksheets("Номенклатура").Cells(j + 1, 2).Value) Tarif = CStr(Worksheets("Номенклатура").Cells(j + 1, 3).Value) Exit For End If Next Worksheets("АКТ").Cells(i + 12, 3).Value = Nazvanie Worksheets("АКТ").Cells(i + 12, 5).Value = Tarif Worksheets("АКТ").Cells(i + 12, 3).Value = _ Worksheets("Названия заказов").Cells(NomSpk + 2, _ 5 + (i - 1) * 2 + 1).Value Worksheets("АКТ").Cells(i + 12, 6).Value = _ Worksheets("АКТ").Cells(i + 12, 4).Value * Tarif Next Else For i = 1 To ColDet Worksheets("Приложение").Cells(i + 3, 1).Value = i Worksheets("Приложение").Cells(i + 3, 2).Value = _ Worksheets("Названия заказов").Cells(NomSpk + 2, _ 5 + (i - 1) * 2).Value For j = 1 To NPrais If CStr(Worksheets("Приложение").Cells(i + 3, 2).Value) = _ CStr(Worksheets("Номенклатура").Cells(j + 1, 1).Value) Then Nazvanie = CStr(Worksheets("Номенклатура").Cells(j + 1, 2).Value) Tarif = CStr(Worksheets("Номенклатура").Cells(j + 1, 2).Value) Exit For End If Next Worksheets("Приложение").Cells(i + 3, 3).Value = Nazvanie Worksheets("Приложение").Cells(i + 3, 5).Value = Tarif Worksheets("Приложение").Cells(i + 3, 4).Value = _ Worksheets("Названия заказов").Cells(NomSpk + 2, _ 5 + (i - 1) * 2 + 1).Value Worksheets("Приложение").Cells(i + 3, 6).Value = _ Worksheets("Приложение").Cells(i + 3, 4).Value * Tarif Next End If Hide End Sub |
Рис. 3.13. Заполнение листа АКТ при большом перечне деталей
Рис. 3.14. Заполнение листа Приложение
На рис. 3.13 и 3.14 приведено, соответственно, заполнение листов АКТ и Приложение при четырех позициях в заказе. В этом случае детали заказа включаются на лист Приложение.
Собственно имеется какой-то прайс с двумя колонками цен и соответственно кол-во заказа и итог. |
|
Karataev Пользователь Сообщений: 2306 |
Файл-результат создается в той же папке, где находится файл с макросом. Изменено: Karataev — 07.06.2016 11:57:41 |
Karataev, вы сделали почти все, но макрос пропускает некоторые позиции. Изменено: Алексей Евстратенко — 07.06.2016 15:59:41 |
|
Zoynels Пользователь Сообщений: 134 |
#4 07.06.2016 16:12:51 Алексей Евстратенко, поменяйте в макросе строку на:
|
||
Karataev Пользователь Сообщений: 2306 |
Алексей Евстратенко, макрос пропускает в файле из поста 2 или в каком-то другом файле? Если в файле из поста 2, то напишите номер строки, которая не скопировалось. Если в другом файле, то тогда нужно посмотреть этот файл. Zoynels прав, нужно сделать так, как в посте 4. Изменено: Karataev — 07.06.2016 16:21:39 |
Zoynels, Вроде все работает. |
|
На своем «тестовом» прайсе протестил, не работает. либо из-за того что встречает пустые ячейки, либо из-за чего-то другого. Хотелось бы чтобы колонки от J до O копировались тоже, где пустые, там пусто, где что-то есть, то копировало как есть, конечно при условии что заданно кол-во напротив. |
|
RAN Пользователь Сообщений: 7091 |
#8 07.06.2016 21:26:13
Из-за того, что файл в #7 только издали похож на файл в #1. |
||
Чем же он издали похож? По сути же одни и те-же колонки. Только что есть пробелы в строках. |
|
RAN Пользователь Сообщений: 7091 |
Да всего лишь наличием столбца А. И диапазон, в итоге, формируетсяне так, как вы ожидали. |
Я вроде и код меняю, но не пойму в чем затык. |
|
RAN Пользователь Сообщений: 7091 |
#12 07.06.2016 22:21:18 На столбец А зря погрешил, до него не доходит.
CurrentRegion + F1 спасет отца русской демократии. |
||
RAN, из всего этого ничего не понял) куда и что мне вставить) поясните если есть возможность |
|
Очередная попытка) Исходный файл, и то что я хочу получить. |
|
Поможет кто решить вопрос, или уже не ждать? |
|
Kuzmich Пользователь Сообщений: 7998 |
#16 08.06.2016 14:15:32 На листе «Прайс»
CurrentRegion определяется не так вы желаете, поскольку в 4-ой строке есть данные. |
||
Алексей Евстратенко Пользователь Сообщений: 38 |
#17 08.06.2016 17:10:23
не помогло |
||
RAN Пользователь Сообщений: 7091 |
#18 08.06.2016 20:02:21 Замените строку так
Эта ошибка уйдет. |
||
Алексей Евстратенко Пользователь Сообщений: 38 |
#19 08.06.2016 20:21:06
пишет что здесь не правильно
|
||||
RAN Пользователь Сообщений: 7091 |
кто бы спорил, я не буду хотя у меня тут не ругался, ругался дальше. либо ваш второй пример издали похож на ваш файл. Изменено: RAN — 08.06.2016 20:59:26 |
Алексей Евстратенко Пользователь Сообщений: 38 |
#21 08.06.2016 21:18:37
этой и не было, просто команда не работает.
не помогло Есть вариант формирования заказа другим образом. Это по кнопочке сформировать, «удаление всех изображений», «скрывание строк с пустым количеством» и сохранение файла с введеным именем+дата. Все это делается для того чтобы минимализировать сам заказ, т.к. прайс имеет много позиций, и при заказе просматривать не всегда удобно. |
||||
RAN Пользователь Сообщений: 7091 |
ну, не знаю. у меня чегой-то делает. Прикрепленные файлы
|
RAN, прикрепите переделанный файл |
|
RAN Пользователь Сообщений: 7091 |
|
Юрий М Модератор Сообщений: 60583 Контакты см. в профиле |
#25 08.06.2016 21:48:35
Надо полагать, что это просьба )) |
||
Алексей Евстратенко Пользователь Сообщений: 38 |
#26 08.06.2016 22:33:50 RAN,Спасибо большое) Изменено: Алексей Евстратенко — 12.06.2016 00:03:25 |
Расчет стоимости заказа онлайн сильно увеличивает конверсию. Еще сильнее она улучшается при онлайн оформлении счета. Почему же так часто приходится ждать расчета стоимости и оформления заказа? Что мешает использовать на сайте тот самый файл Excel, в котором рассчитывает заказ продавец?
Давайте разберемся концептуально →
Если расчет стоимости всегда делается в Excel и этот Excel живет в облаке, то почему бы не позволить любимым клиентам самостоятельно делать расчет в заботливо подготовленном шаблоне? У клиентов разный уровень подготовки, но галочки поставить и ввести свое имя с адресом могут все. А больше от них ничего и не требуется ¯_(ツ)_/¯
Посмотрим на конкретном примере → как повесить на сайте свой Excel с расчетом заказа и автоматическим оформлением счета. Не будем пока выяснять что лучше использовать: Google Sheets или MS Office, сегодня разговор не об этом. Плюсы и минусы технической реализации в разных сервисах в этой заметке не рассматриваем.
Excel online это собирательное название табличных редакторов в облаке. Примерная подборка сервисов
Excel online это универсальная платформа, позволяющая получить один и тот же результат множеством способов. Поэтому конкретный код в привязке к конкретному сервису сегодня не обсуждается. Смотрим чисто внешне как это может быть на примере одной из возможных реализаций.
1. Калькулятор заказов
В Excel можно автоматизировать многое: от получения актуального курса валюты с сайта ЦБ и вызова курьера на сайте транспортной компании до генерации чертежей и составления списка необходимых материалов. Задача калькулятора заказов ограничивается только расчетом цены договора.
Калькулятор заказов позволяет сделать расчет стоимости заказа исходя из разных факторов: необходимых материалов, вариантов отделки, количества операций, упаковки, сроков и т.д. Как правило, калькулятор заказов делается в Excel, поскольку пользоваться формулами умеют практически все.
Как правило, калькулятор заказов претерпевает несколько периодов эволюции и после хождения по рукам с разным уровнем квалификации может приобретать непонятный и запутанный интерфейс, пользоваться которым могут только избранные сотрудники. Выкладывать такое на сайте конечно нельзя, все придется переделать. Интерфейс калькулятора должен стать максимально прост и предельно понятен для любого человека с улицы.
В идеале калькулятор должен превратиться в чек-лист, в котором нужно отметить галочками необходимое. В более сложных случаях можно использовать выпадающие списки и выбор даты. Ввод руками букв и цифр лучше исключить совсем.
Посмотрим, как это может выглядеть на сайте.
Для примера возьмем услуги парсинга недвижимости. Для подсчета стоимости нужно сложить стоимость различных опций: сохранять фото, открывать номер телефона, копию страницы в pdf или в png и т.д. Затем нужно пересчитать стоимость выбранных опций на срок использования услуги.
Пример начинается с предварительного экрана. На предварительном экране приходится использовать Google Web App embedded. С одной стороны, это технический костыль. С другой стороны, такой пункт с пояснениями полезен пользователям.
Костыль в том смысле, что мы не можем просто взять и отдать юзеру калькулятор заказа. Проблема в том, что калькулятор один, а юзеров много. В многопользовательском режиме юзеры будут своими правками мешать друг другу. Поэтому каждому юзеру нужно сделать персональную копию калькулятора. На лету гугол это сделать не позволяет из-за ограничения перенаправления на другую страницу без участия юзера.
Поэтому используется Web App, которое делает копию калькулятора и подсовывает его адрес в ссылку кнопки для перехода в сам калькулятор. Благодаря ему у каждого юзера будет свой уникальный адрес перехода при нажатии на кнопку, который ведет на персональную копию файла с калькулятором заказа.
Другой задачей этого Web App является привязка кода к файлу калькулятора. Дело в том, что гугло-код не embedded в книгу калькулятора, а bounded. Разница в том, что привязка кода не копируется автоматически вместе с файлом калькулятора и его нужно привязывать явно.
Третья задача обусловлена тем, что нет события закрытия книги. В том смысле, что гугол его не реализовал и невозможно как в Excel по событию закрытия книги выполнить назначенный макрос. Поэтому приходится делать записи для последующего удаления копий.
Пока происходит все перечисленное, вместо кнопки отображается анимация загрузки
В это время юзер видит пояснения, которые снимают ожидаемые вопросы. Пытаться втиснуть пояснения в сам калькулятор кажется плохой идеей. Если же их вообще не будет, то это встревожит и отвлечет многих потенциальных пользователей. Поэтому костыльный предварительный экран по факту все равно пришлось бы делать для здорового UX.
Через несколько секунд подготовка калькулятора завершается, и пользователь получает кнопку для перехода в сам калькулятор.
С предварительной страницей всё, жмем на кнопку и переходим на основной экран.
Тут тоже костыль. Но этот костыль вписать в UX уже не получается: мобильные браузеры показывают гугло-таблицу в сильно упрощенном виде и он вам не понравится. Поэтому мобильным пользователям приходится показывать инструкцию по переходу в полноценный режим. Инструкция на два клика.
И, наконец, видим сам калькулятор:
С левой стороны иконки группировки опций. Если бы не группировка, калькулятор растянулся бы на несколько экранов.
Не все знают, как пользоваться группировкой, поэтому всеми силами стараемся обратить на нее внимание и объяснить как она работает.
Также стараемся максимально доходчиво объяснить, что для использования калькулятора нужно ставить галки.
Сроки рассчитываются также галкой. В данном случае не предполагается брать авансы, поэтому такой реализации галками достаточно. Если без ввода даты не обойтись, то есть готовый Date Picker.
Сразу можно заметить, что данные на листе не защищены от изменений. Пользователь может менять названия опций и цены.
Поначалу это может смутить. Но, если разобраться, то ничего плохого в этом нет.
Дело в том, что защита ячеек включает запрет на редактирование и на изменение, а возможность группировки относится к изменению листа. То есть если ячейки с ценами защитить, то группировка работать не будет.
С другой стороны, защита ячеек в данном случае – это не более чем условность. На любой странице в браузере любой пользователь может изменить буквально все. Ведь браузер отображает документ с разметкой html, который можно свободно редактировать здесь же в браузере встроенным средством Dev Tools. То есть защита в данном случае невозможна технически.
Все расчеты в данном примере сделаны только с помощью формул, макросы не используются. Галочка считается в формуле за 1, а ее отсутствие – это 0. Т.е. сумма = цена х ☑
.
Самые продвинутые могут заметить, что файл с калькулятором можно утащить с сайта и открыть в полном интерфейсе гугл-таблиц, в том числе получить полный доступ и снять защиту с защищенных ячеек. Однако, никакого фрода в этом нет. Кому-то это поможет увидеть как устроены формулы, но материального ущерба или выгоды из этого не получится.
Преимущества Excel-онлайн калькулятора на сайте
Как и в обычном Excel, в облаке также можно быстро и бесплатно изменить файл калькулятора заказов. Сайт при этом переделывать не придется. На сайте используется ссылка на папку с файлом калькулятора заказов. Изменение этого файла приведет к тому, что он будет показан на сайте в измененном виде. Изменения делаются как обычно: нужно зайти в свой гуглоаккаунт, открыть и изменить нужную гуглотаблицу. Также можно заменять файл калькулятора его новой версией без необходимости замены ссылки в коде сайта.
Точно также без изменений в коде можно вносить изменения в оформление счета и содержание договора. Надо просто заменить (или отредактировать) в папке в облаке гугла файл счета или договора.
Специальных требований к сайту также нет. Гугло-калькулятор вставляется на любую страницу сайта с помощью элемента iframe. Это простая операция, особых знаний для этого не нужно.
Несколько сложнее написать скрипт для копирования файла с калькулятором и передачи его на сайт. Но, если вам удалось освоить VBA Excel, то освоить Google Script будет несложно.
Обзор калькулятора заказов на этом закончен, перейдем к генератору счетов (и договоров).
2. Генератор счетов
Точно так же, как калькулятор заказов, генератор счетов имеет предварительный экран. Здесь объясняется куда попадет пользователь, что там надо делать и что получится в результате:
Генератор счетов устроен точно так же, как калькулятор заказов с одним дополнением: формы для ввода реквизитов, необходимых для оформления счета (и договора).
Фактически калькулятор заказов и генератор счетов являются одним и тем же файлом. Но для использования этого файла в качестве калькулятора заказов из файла удаляется форма для ввода реквизитов.
С точки зрения оформления форма для ввода реквизитов может быть расположена на отдельной вкладке. В этом случае под формой калькулятора заказов потребуется кнопка «Перейти к оформлению», которая будет открывать (делать активной) вкладку с формой для ввода реквизитов. В нашем примере форма для ввода реквизитов расположена непосредственно под формой калькулятора заказов.
Полный доступ пользователя к копии файла генератора предполагает возможность вписать в счет любые суммы. Однако, этого не происходит, так как при заполнении счета из копии файла генератора берутся только установленные галочки, а соответствующие им суммы и названия берутся из оригинала файла генератора.
Начинается генератор счетов с галочки оформления договора. Счет оформляется в любом случае и его галочка не снимается. Договор нужен не всем, поэтому вводить лишние реквизиты нет смысла.
В гуглотаблицах есть готовая проверка ввода (aka валидация формы), поэтому, например, в ИНН не получится ввести букву или количество цифр больше или меньше 10.
Условное форматирование также есть, заполненные реквизиты меняют цвет фона.
Изображения можно вставлять в ячейку или поверх ячеек.
Призыв к действию традиционно оформляют в виде кнопки:
Но в гуглокоде есть нюанс: код привязывается к кнопке локально, он виден в прикрепленном к таблице Apps Script. А вот привязанный к галке код может быть расположен не в embedded project, а в недоступном пользователю файле. Это особенность installable triggers.
Installable trigger работает с событием onEdit установки галки, а с кликом по кнопке так не работает. Остается загадкой почему гугол придумал, что нажатие на кнопку не обрабатывается как событие аналогично onEdit или onOpen.
Как было сказано выше, пользователь может получить все права на файл генератора счетов, в том числе доступ к коду в прикрепленном проекте. Это открывает дополнительные возможности для фрода. Поэтому код лучше защитить от свободного доступа. По этой причине вместо кнопки используется галка:
Установленная галка запускает процесс заполнения счета и договора по шаблону. Это продолжается несколько десятков секунд, в течение которых отображается прогресс выполнения задач.
После завершения процесса вид станет таким:
Безопасность для гугла не просто фишка, а полноценный фетиш. Поэтому просто кликнуть на ссылку не получится: ведь пользователь не знает куда ведет ссылка, а это чревато злоупотреблениями. Чтобы спасти пользователя от возможного обмана гугол показывает адрес ссылки при наведении на нее мышки. Вот уже по адресу можно кликать. А при наведении на адрес показывает его еще раз в темной теме .. ну, теперь вы точно знаете куда вас ведет эта ссылка.
К этому моменту оформленные документы отправлены почтой пользователю и продавцу в pdf. Перевод гуглодоков в pdf и отправка почтой отлично работает из коробки. Гугол даже выложил готовый код в документации.
В нашем примере почта будет отправлена только в том случае, если вы перешли в генератор счетов из интерфейса Робастика. При переходе в генератор по ссылке в этой статье гуглокод догадается, что пользователь ненастоящий, и почта не отправится. Поэтому можно тестировать его без оглядки на предполагаемый спам.
Из-за ограничений безопасности гугла нельзя просто отдать ссылку на скачивание data URI scheme. Причины гугол не раскрывает. Поэтому пользователь открывает по ссылке завершающий Web App embedded, где уже получает ссылку с содержащимся в ней счетом или договором в pdf.
Почему ссылка должна быть с data URI scheme, а не на обычный pdf-документ в GDrive? Потому что ссылка с data URI scheme вечная → ее можно загрузить и после удаления самого документа.
В заключение перечислим достоинства и недостатки, которые замечены в реализации онлайн калькулятора заказов и генератора счетов в концепции Excel-online в экосистеме Google.
Минусы:
-
непривычный интерфейс (предварительный и завершающий экраны, неудобство на мобильных устройствах, галка вместо кнопки, двоящаяся ссылка и т.д.)
-
медленно работает (анимация загрузки и индикация прогресса)
Плюсы:
-
не нужен сервер (serverless)
-
можно интегрировать на любом сайте на конструкторе с бесплатным хостингом
-
не требует высокой квалификации для верстки и программирования
-
возможна поддержка (и разработка) собственными силами
Вывод
Excel-онлайн является альтернативой при разработке используемого на сайте калькулятора заказов и генератора счетов.
Excel-онлайн подходит, когда внешний вид не критичен.
Excel-online полезен, когда:
1. необходимы изменения калькулятора (в том числе шаблонов договора и счета);
2. сложный или громоздкий калькулятор, разработка и поддержка которого в традиционном стеке затруднительна.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вас отпугнет оформление счета в Excel-онлайн?
62.5%
конечно отпугнет такая срамота
10
37.5%
если не люксовый товар/услуга, то не отпугнет
6
Проголосовали 16 пользователей.
Воздержались 2 пользователя.
Excel для Microsoft 365 для Mac Excel 2021 для Mac Excel 2019 для Mac Excel 2016 для Mac Еще…Меньше
Вы можете создать форму в Excel, добавив в книгу элементы управления содержимым, такие как кнопки, флажки, списки и поля со списками. После этого другие пользователи смогут заполнить эту форму в приложении Excel и при желании распечатать ее.
Шаг 1. Отображение вкладки «Разработчик».
-
В меню Excel выберите элемент Параметры.
-
В разделе Разработка выберите Представление.
-
В разделе Показывать на ленте установите флажок Вкладка «Разработчик».
Шаг 2. Добавление и форматирование элементов управления содержимым
-
На вкладке Разработчик выберите элемент управления, который хотите добавить.
-
На листе щелкните место, куда нужно вставить элемент управления.
-
Чтобы задать свойства элемента управления, щелкните его, удерживая нажатой клавишу CONTROL, и выберите пункт Формат элемента управления.
-
В окне Формат объекта задайте такие свойства элемента управления, как шрифт, выравнивание и цвет.
-
Повторите действия 1–4 для каждого добавляемого элемента управления.
Шаг 3. Защита листа, содержащего форму
-
В меню Сервис наведите указатель на пункт Защита и выберите команду Защитить лист.
-
Выберите нужные параметры защиты.
-
Сохраните и закройте книгу.
Совет: Чтобы продолжить редактирование после защиты формы, в меню Сервис наведите указатель на пункт Защита и выберите команду Снять защиту листа.
Шаг 4. Проверка формы (необязательно)
При необходимости вы можете проверить форму, прежде чем распространять ее.
-
Защитите форму, как указано в описании шага 3.
-
Откройте форму еще раз, заполните ее обычным способом и сохраните как копию.
Нужна дополнительная помощь?
За 2-3 года работы у Вас может накопиться несколько десятков постоянных клиентов и заказчиков, кому нужны Ваши услуги время от времени. Кроме них, накопится огромное количество заказчиков, которые обращались за услугами 1-2 раза, и в идеале с ними необходимо поддерживать контакт и постараться перевести в категорию постоянных клиентов.
Решить эти задачи можно при помощи ведения базы клиентов. Для этого существуют различные CRM, но как правило, они платные. Бесплатный вариант – создать и вести базу клиентов в Excel. Давайте посмотрим, как может формироваться база клиентов в данной программе.
В статье рассмотрим два варианта ведения базы — простой и сложный, с большим числом полей и функций.
База клиентов в Excel (простой вариант)
Специально для фрилансеров мы сделали бесплатную программу для ведения базы клиентов в Excel. В принципе, она универсальна и при небольшой адаптации может использоваться в торговых или сервисных компаниях с небольшим числом клиентов. Ниже будут комментарии, как с ней работать.
Скачать файл для ведения базы клиентов (.xls)
Лист «Мои услуги» – представляет список, в который можно включить до 10 услуг. Услуги из этого списка Вы сможете выбрать при добавлении информации о клиенте в базу данных.
Лист «Клиенты» – база клиентов, с которыми Вы работаете или работали. База включает следующую информацию:
- Порядковый номер клиента. Позволяет понять, насколько велико число Ваших клиентов.
- Имя клиента – можно вводить имя или ФИО, а также название компании
- Телефон
- Что заказывает – поле заполняется путем выбора услуги из выпадающего списка. Если клиент заказывает несколько услуг, можно выбрать из списка основную, а другие указать в комментариях.
- Комментарий – описание клиента в свободной форме, особенности работы с заказчиком.
- Дата первого заказа – дата получения первого заказа. Позволяет понять, насколько долго Вы уже работаете с клиентом.
- Дата последнего заказа – важный параметр, позволяет отследить последнюю продажу клиенту. Например, Вы можете отсортировать клиентов по дате последнего заказа и посмотреть, кто из клиентов давно ничего не заказывал – написать им, напомнить о себе и, возможно, получить новый заказ.
По каждому полю список клиентов можно сортировать. Например, сделать сортировку по типам заказываемых услуг, чтобы понять, кто из клиентов покупает «копирайтинг» и сделать им специальное предложение на написание текстов (если Вы решили сделать таковое).
При желании количество полей в базе клиентов в Excel можно дополнять, но на мой взгляд, слишком перегружать таблицу не стоит.
Как работать с простой базой клиентов в Excel?
- Добавляйте в базу всех новых клиентов, которые оформили реальный заказ (т.е. тех, кто просто позвонил или один раз что-то написал, но не купил – добавлять не нужно);
- Раз в полгода отслеживайте клиентов, которые давно не делали заказы. Напишите им, напомните о себе. Чаще, чем раз в полгода, писать не стоит – иначе Вы рискуете слишком надоесть клиенту. Но это верно только для фрилансеров, в каких-то сферах стоит чаще напоминать о себе
- Если Вы чувствуете спад в количестве заказов, сделайте клиентам специальное предложение. Например, сделайте скидку на копирайтинг и напишите постоянным клиентам, кто заказывает тексты, о снижении цен.
- Используйте столбец с комментариями, чтобы указать особенности каждого клиента, которые помогут Вам эффективно работать с заказчиком. Например, каким-то заказчикам нужно помочь с составлением технического задания – отметьте это в комментариях, чтобы не забыть помочь с ТЗ.
База клиентов в Excel (расширенный вариант)
Скачать шаблон базы данных (расширенный вариант) (.xls)
В расширенном варианте базы у каждого клиента можно указать дополнительные сведения:
- Канал привлечения – источник получения клиента. Список источников можно отредактировать на листе «Каналы привлечения». Допускается указывать до 20 каналов.
- Статус – активный или не активный. По умолчанию ставьте всем клиентам активный статус. Ниже я расскажу, в каких случаях его нужно менять на не активный.
В расширенной базе имеется функция отслеживания клиентов, которым нужно напомнить о своих услугах. Если у активного клиента с момента последнего заказа прошло более 6 месяцев, в столбике «Пора звонить» ячейка станет красной. В примере выше Вы можете увидеть такую ячейку у клиента №1. В этом случае рекомендую написать клиенту и напомнить о себе.
Если Вы получили новый заказ от такого клиента, укажите дату нового заказ в столбике «Дата последнего заказа». Если клиент ничего не ответит, переводите его в не активный статус. По не активным клиентам система не делает напоминаний.
Резюме
Программа Excel позволяет создать еще более сложные и интересные базы клиентов. В наших примерах достаточно простые варианты, но именно из-за простоты они позволяют не тратить много времени на ведение базы клиентов, а с другой – помогают поддерживать отношения с клиентами и получать больше заказов.
Если у Вас есть предложения по доработке шаблонов, представленных в статье, пишите в комментариях.
Дополнительные материалы
Что такое CRM-система?
Обзор бесплатных и платных CRM, помогающих вести проекты и отслеживать важные задачи.
Как планировать рабочее время и вести учет дел в Excel?
Бесплатная программа в Excel, которая поможет вам привести дела в порядок.
Рекомендуем
Электронной почтой пользуются миллионы людей – это удобно, быстро и доступно.
Чтобы отправить электронную почту Вам необходим компьютер, …
Никнейм – Ваша визитная карточка в Интернете. Виртуальные собеседники не видят ничего, кроме Вашего ника и иногда – аватарки (небольшой картинки …