Массивы в VBA (Visual Basic for Applications) - работа с данными и лучшие практики

  Рет қаралды 2,872

Клондайк Аналитика | Python и анализ данных

Клондайк Аналитика | Python и анализ данных

Күн бұрын

Пікірлер: 14
@analyst_klondike
@analyst_klondike 11 ай бұрын
Что-то непонятно? Объясним! Переходи по ссылке, оставляй вопрос: t.me/analyst_klondike
@Rusia-16
@Rusia-16 Жыл бұрын
Интересно, но это не для новичков. Я после года изучения VBA только сейчас обратил внимание на массивы. Всегда без них обходился. Не знаю пока где их применить можно.
@analyst_klondike
@analyst_klondike Жыл бұрын
Да, материал несколько превосходит базовый уровень владения VBA, особенно в части динамических массивов. Однако, массивы - базовая структура данных, без которой не обходится ни один язык программирования, поэтому изучить их нужно.
@BogachevCHANEL
@BogachevCHANEL Жыл бұрын
Там, если есть очень много данных, очень круто использовать массивы + словари (Scripting.Dictionary). В своё время я ускорил свой проект в Excel где-то в 150 раз. Там, в отличие от коллекций, есть ключи и команда Exist. Если у тебя десятки тысяч строк, то несколько циклов для перебора использовать достаточно долго. Если научиться это использовать, то скорость вырастет во много раз. Кроме того, при работе с массивами и словарями важно правильно выбирать типы данных для хранения информации. Например, использование числовых типов данных вместо строковых может ускорить выполнение операций. Также стоит помнить о возможности оптимизации алгоритмов и использовании более эффективных методов обработки данных.
@BogachevCHANEL
@BogachevCHANEL Жыл бұрын
Для примера уточню: работал на крупном заводе в должности администратора. Мои обязанности включали распределение работы среди сотрудников, контроль за поступающим материалом из других отделений и отслеживание перемещения продукции в другие отделы. Все это можно было делать вручную, но это занимало слишком много времени. Ежедневно мне приходилось работать с большим количеством Excel-таблиц, и мне захотелось автоматизировать этот процесс. Учитывая, что компания была крупной, IT-специалисты были заняты другими задачами, а система была закрытой, я решил выполнить автоматизацию с помощью Excel. Постепенно я начал создавать функции с переменными, затем перешел к массивам, словарям, кнопкам и формам. Далее я настроил взаимодействие с операционной системой Windows, папками и файлами, автоматическое создание, удаление, заполнение и форматирование цветами целых книг и сводных таблиц. Также я разработал кнопки, отвечающие за различные действия. Все это происходило постепенно, но каждый новый шаг ускорял процесс работы. Я использовал Debug.Print, чтобы проверять время выполнения различных действий. Благодаря этому удалось сократить время работы программы с 30 минут до 12 секунд. Кроме того, я смог сократить время обработки другого большого проекта с нескольких часов до 7 минут. VBA для Excel - очень мощный инструмент для обработки данных.
@ТатьянаМуравьева-ъ7м
@ТатьянаМуравьева-ъ7м Жыл бұрын
Молодец!
@marvellousPP
@marvellousPP Жыл бұрын
@@BogachevCHANELочень интересный кейс, сталкиваюсь в данный момент со схожей монотонной работой в экселе в компании, не мог бы подсказать где черпал информацию для обучения , не то честно говоря глаза разбегаются каждый раз когда собираюсь учить vba
@Русь-Родина
@Русь-Родина Жыл бұрын
Лучше один раз увидеть, чем 100 раз услышать.
@access-program
@access-program Жыл бұрын
подскажите код пожалуйста, как можно из массива подсчитать кол-во одинаковых значений. Например в одномерном массиве от 1 до 31 содержащий символьный тип данных 1 - "В", 2-"Я", 3 "Я", 4 "Б" и тд. Вывести результат в переменные. Например, количество значений символа "В" в массиве - 8, "Я" - 20 и тд. И в коде указывать не явный символ для поиска, а автоматически определить значение из первого индекса, циклом подсчитать это значение в массиве, также из 2 до 31, 3 до 31. Наверно можно как то с помощью функций сделать код проще и более быстродействующим. Спасибо
@analyst_klondike
@analyst_klondike Жыл бұрын
Добрый день! Эта классическая задача наиболее просто решается через словари (Dictionary) в VBA (да и в любом другом языке программирования). Ключи в словаре всегда уникальны. На псевдокоде это может выглядеть так: для каждого элемента исходного массива проверяем, входит ли он в словарь. Если нет, то добавляем в словарь пару (где 1 - это значение, соответствующее ключу). Если да, увеличиваем значение, соответствующее ключу на 1. По итогу, у вас будет словарь, ключи которого - это уникальные значения из исходного массива. А соответствующие значения в словаре - это количество раз, которые каждый соответствующий ключ встречался в исходном массиве. Попробуйте этот способ сначала на бумаге, а потом в коде.
@access-program
@access-program Жыл бұрын
немного не понял, ключи в массиве тоже уникальны, а значения могут повторятся, в словаре ключи и значения элементов оба уникальны или нет? По логике в словаре должны и значения быть уникальными. А можете сделать видео на эту тему? Спасибо за ответ@@analyst_klondike
@access-program
@access-program Жыл бұрын
можно вместо словаря использовать тогда таблицу, где значения, которые в массиве - те же самые что и в таблице, эта таблица справочник у нее поле символа значения уникальны, ну немного стало доходить, проверяем первый символ из массива сравнивая его с таблицей справочником методом цикла (проходом), если совпадений нет, то 1 Далее также проверяем второй символ из массива. Нужно только в таблицу справочника символов добавить числовое поле для подсчета, перед началом процедуры это поле обновить 0 для всех записей (запросом). В итоге должно получится результат в самой таблице справочнике будут поля с символами и их кол-во в соответствии массива. Надо попробовать@@analyst_klondike
@demitridem5859
@demitridem5859 Жыл бұрын
Понимаю, что происходит, но не понимаю зачем? Озвучивание примера, как это используется на практике, существенно поможет в понимании процессов. С другой стороны, не исключаю, что программисты на VBA и так всё понимают. Я не программист, а достаточно опытный юзер excel, но макросы использовал мало, только как создание кнопок в отдельных проектах, и мне более актуален в работе power query.
СОВРЕМЕННЫЙ редактор кода для VBA: Rubberduck для Visual Basic for Applications
17:20
Клондайк Аналитика | Python и анализ данных
Рет қаралды 2,9 М.
Мини-курс Python + Excel за 25 минут
24:55
Клондайк Аналитика | Python и анализ данных
Рет қаралды 2,4 М.
It works #beatbox #tiktok
00:34
BeatboxJCOP
Рет қаралды 41 МЛН
人是不能做到吗?#火影忍者 #家人  #佐助
00:20
火影忍者一家
Рет қаралды 20 МЛН
Python multithreading in 14 minutes
14:45
Python With Vedang
Рет қаралды 351
Дашборд в Excel на основе сводных таблиц за 10 минут.
11:47
Клондайк Аналитика | Python и анализ данных
Рет қаралды 1 М.
JavaScript Starter  Оператор
39:16
KrAB 360
Рет қаралды 2
Объединение (concat) и соединение (merge) датафреймов в Pandas
23:31
Клондайк Аналитика | Python и анализ данных
Рет қаралды 78
Полный курс VBA для начинающих с нуля за 3.5 часа
3:26:08
Клондайк Аналитика | Python и анализ данных
Рет қаралды 5 М.
Excel без мышки - лучшие горячие клавиши!
8:26
Клондайк Аналитика | Python и анализ данных
Рет қаралды 3,5 М.
Программируем торговую стратегию на Python
42:10
Клондайк Аналитика | Python и анализ данных
Рет қаралды 375
Сводные таблицы в Excel - как перестать бояться и начать их использовать.
7:36
Клондайк Аналитика | Python и анализ данных
Рет қаралды 1 М.