Как сделать словарь в excel

Обновлено: 06.07.2024

[Excel VBA] Что касается применения словаря, в качестве примера возьмем, как классифицировать данные.

В Excel VBA словарь - это набор объектов. Основные компоненты можно разделить на ключи и элементы. Типы данных для хранения включают текст, числа, даты и даже массивы и объекты. Особенность словаря в том, что ключ не повторяется, благодаря уникальной особенности, в объектах словаря возможен поиск. По сравнению с использованием таких функций Excel, как сопоставление, индекс и vlookup, он более эффективен, поскольку сохраняет данные в памяти и одновременно выполняет такие задачи обработки, как поиск, удаление и воссоздание.

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

1. Исходные данные представляют собой двумерную матрицу, которая содержит список серийных номеров и ключей. Из исходных данных видно, что список ключей состоит из серии из k, таких как k2, k3 и т. Д., И одновременно присутствуют повторяющиеся строки. Например, k4 неоднократно встречается в порядковых номерах 4 и 5.

2. Цель состоит в том, чтобы найти k строк, образованных списком ключей, и в то же время получить номер каждой k строк. Как видно из результата, хотя в списке ключей 10 серийных номеров, составленная k-строка состоит только из k1, k2, k5, k4 и k3, всего 5 k-строк. Среди них k1 повторяется 3 раза и так далее.

3. Словарь имеет базовый синтаксис, например, .add используется для создания нового набора ключей и элементов, а .count используется для вычисления количества элементов. В этом примере программы используются следующие команды:

A. .exists (ключ): используется для определения того, существует ли уже ключ, часто используется с If . Then . else End if

B. union: используется для сопоставления .exist (key), который в основном используется для связывания повторяющихся k строк для облегчения последующих вычислений.

----- Если статья вам полезна, откройте WeChat, отсканируйте ее и попросите автора выпить чашку кофе. -----

Если вы хотите добавить Пользовательский словарь в Microsoft Word, Excel, Outlook, или других приложений Office, вот что вам нужно сделать. Можно создать и включить свой собственный словарь в эти приложения без надстройки.

Предположим, что в вашей компании используются термины, которые всегда отмечаются приложениями Office. Если да, вы можете добавить слово в свой словарь. После этого приложения не сочтут эти слова неправильными. Однако, если у вас есть, скажем, пятьдесят или сто слов, которые вы хотите включить в словарь, лучше создать собственный словарь. В этом руководстве представлены точные шаги, которые вам нужно будет выполнить, если вы хотите создать и включить настраиваемый словарь в любое приложение Microsoft Office.

К сведению, в эту статью включен снимок экрана Outlook. Однако вы можете сделать то же самое и в других приложениях.

Добавить собственный словарь в Word, Excel, Outlook

Чтобы добавить собственный словарь в Word, Excel и Outlook, выполните следующие действия:

  1. Откройте Блокнот на вашем компьютере.
  2. Пишите по одному слову в строке.
  3. Сохраните файл с .Dec расширение.
  4. Откройте Outlook на своем ПК.
  5. Нажмите на Файл> Параметры.
  6. Перейти к Почта таб.
  7. Нажмите Орфография и автозамена> Пользовательские словари.
  8. Выберите язык и нажмите Добавлять кнопка.
  9. Выберите файл .dic.
  10. Щелкните значок Ok кнопка.

Если вы хотите узнать больше, продолжайте читать.

После этого откройте Outlook на своем ПК, перейдите в Файл> Параметры, и переключитесь на Почта таб.

Если вы хотите импортировать словарь в Word или Excel, вам нужно будет посетить Проверка таб.

В следующем окне нажмите на Пользовательские словари кнопка, как видно на При исправлении орфографии в программах Microsoft Office раздел.

Как добавить собственный словарь в Word, Excel и Outlook

После этого отображаются все языки (например, английский — Индия, английский — США и т. Д.). Лучше выбирать ТАМОЖЕННЫЙ ДИК в Все языки ярлык и щелкните Добавлять кнопка.

Как добавить собственный словарь в Word, Excel и Outlook

Теперь выберите файл .dic, который вы создали ранее. Теперь нажмите на Ok кнопку, чтобы сохранить изменение.

Файлы без кодировки Unicode не могут быть добавлены в список словарей. Сохраните файл как файл Unicode, чтобы добавить его в список словарей.

Как добавить собственный словарь в Word, Excel и Outlook

Если вы видите эту ошибку, сделайте следующее.

Сначала создайте собственный словарь, как указано здесь. Затем покажите все скрытые файлы и папки на вашем компьютере. После этого перейдите по следующему пути —

Здесь вы увидите файл с именем CUSTOM.DIC. Переместите этот файл в безопасное место. После этого вставьте свой собственный файл словаря в папку UProof и переименуйте его в CUSTOM.DIC.

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

Если вы программируете на VBA/VBS, то рано или поздно вынуждены будете познакомиться с объектом Dictionary . Если в двух словах, то Dictionary - это продвинутый массив. Как вы знаете, массив - это упорядоченный набор неких (обычно однородных) элементов. Вот типичный массив:


Элементы пронумерованы и доступны по номеру индекса. Индекс всегда числовой.

А вот, что из себя представляет Dictionary (словарь):


Как видите, каждому элементу поставлен в соответствие не просто числовой индекс, а уникальный ключ, который в данном случае представляет из себя текстовую строку (имена). Двух одинаковых ключей в словаре быть не может, но могут быть одинаковые элементы (хоть все одинаковые). Таким образом словарь - это обычно некий список, снабжённый ключом, при помощи которого вы хотите извлекать полезную информацию (элементы). В указанном примере мы имеем, допустим, имена детей в качестве ключа, а в качестве элементов, поставленных в соответствие ключу, скажем, количество карманных денег у ребёнка.

С другой стороны нечто подобное можно же сделать, используя массив. Давайте объявим двумерный массив:

Должно быть у словаря есть какие-то преимущества перед таким использованием массивов? И это действительно так!

Давайте пока просто перечислим важнейшие преимущества:

Словарь контролирует уникальность ключей. Два одинаковых ключа не могут быть добавлены в словарь. Это важное свойство, так как программисту очень часто требуется обеспечить или проконтролировать уникальность каких-либо наборов значений, и в этом может с успехом быть использован Dictionary ;

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

У словаря есть встроенный метод ( Exists ), при помощи которого можно понять, добавлен ли некий ключ в коллекцию;

Словарь позволяет добавлять новые элементы и удалять любые элементы, что, работая с массивами, сделать гораздо сложнее;

Словарь может вернуть все ключи и все элементы в виде отдельных одномерных массивов.

2. Создание Dictionary

Существует несколько способов создать объект типа Dictionary . Ознакомимся с ними:

Считается, что методы, использующие позднее связывание надёжнее в плане обеспечения работоспособности программы на разных компьютерах, так как не зависят от настроек Tools - References. редактора VBA.


Однако, учитывая, что библиотека Microsoft Scripting Runtime присутствует везде, начиная с Windows 2000 , я думаю, что вы без какого-либо ущерба можете использовать методы раннего связывания. Раннее связывание хорошо тем, что оно несколько быстрее работает, а также во время разработки вы можете пользоваться функцией завершения кода (когда среда программирования вам подсказывает имеющиеся у объекта свойства и методы). Выбор за вами.

3. Свойства и методы объекта Dictionary

4. Наполнение словаря

4.1. Типы данных ключа и элемента

Dictionary наполняется по одному элементу. Не существует способов наполнить словарь массово. Чтобы добавить в словарь новый элемент вы должны иметь уникальный ключ и сам элемент, который под этим ключом будет храниться в словаре.

В качестве типа данных для элемента может быть использовано практически всё что угодно: числа, логический тип, строки (в том числе пустые), дата-время, массивы, любые объекты (листы, диапазоны, коллекции, другие словари, пустой указатель Nothing ).

В качестве типа данных для ключа могут быть использованы: числа, строки, дата-время, объекты, но не массивы.

UDT (User Defined Type) не может напрямую использоваться в качестве ключа и/или элемента, но данное ограничение можно обойти, объявив аналог UDT , создав класс и определив в нём свойства аналогичные имеющимся в UDT . А поскольку класс - это объектный тип, то его уже можно использовать для ключей и элементов.

4.2. Через метод Add

На листе Example , прилагаемого к статье файла, есть таблица с TOP30 стран по площади их территории. Для области данных этой таблицы объявлен именованный диапазон SquareByCountry . Пример ниже добавляет все строки указанногот ИД в Dictionary по принципу страна ( key ) - площадь ( item ):

Как видите, для добавления элемента (item) мы в 12-й строке кода использовали метод Add объекта dicCountry . Если в нашей таблице будет задвоена страна, то при попытке добавить в словарь элемента с ключом, который в словаре уже есть, будет сгенерировано исключение:


4.3. Через свойство Item

Используя свойство Item , также можно добавлять пары ключ-элемент, однако, при попытке добавить дублирующий ключ исключения сгенерировано НЕ БУДЕТ , а элемент будет заменён на новый (с потерей старого). Это очень полезно - иметь возможность выбирать способы наполнения словаря, отличающиеся реакцией на задвоение ключей.

4.4. Неявное добавление ключа в Dictionary

И ещё один неожиданный и я бы сказал экзотический способ пополнения словаря. Если упомянуть свойство Item по ПРАВУЮ сторону оператора присваивания, то он оказывается добавит в словарь key с пустым item, если данного key не существует в коллекции. Если же такой key уже существует, то никаких действий предпринято не будет.

Ещё раз хочу обратить ваше внимание, что элемент (item) при таком пополнении коллекции будет пустым ( Empty ). Это можно использовать, если вам нет необходимости что-то хранить в элементах в качестве полезной нагрузки (например, когда вы просто строите список уникальных значений, встречающихся в столбце таблицы).

Если вы читаете словарь через Item (а это, собственно, самый логичный и распространенный метод), и при этом хотите избежать добавления пустых ключей в словарь, используйте предварительно метод Exists , что контроля наличия такого ключа в коллекции.

Приведенный ниже фрагмент помещает данные из таблицы Excel в словарь, где первый столбец таблицы - это имя файла (ключ), а второй столбец - это путь к файлу. Код работает совершенно нормально, однако было бы несколько других таблиц, с которыми я бы хотел это сделать, создав кучу словарей с разными именами файлов и местоположениями для разных целей.

В настоящее время я создаю эти словари отдельно, все в отдельном маленьком подразделе. Это, конечно, означает, что у меня есть несколько версий одного и того же кода: довольно громоздко.

Моя проблема в том, что я понятия не имею, как создать динамическое количество переменных для размещения моих таблиц. Уверен, что это даже невозможно. Я был бы признателен за некоторые предложения о том, что я мог бы изучить, какое общее направление стоит изучить.

2 ответа

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

Обратите внимание, что цикл считывает каждую строку таблицы в переменной Locations и использует первую ячейку этой строки для ключа , а вторую - для значения . Синтаксис: Locations([Row], [Column]) . Строка всегда равна 1, потому что строка имеет только одну строку. Эта идея взята из вашего кода. Я не уверен, что это то, что вы имели в виду, но так он может работать эффективно.

Систему можно легко модифицировать для добавления элементов из разных таблиц в один и тот же словарь, если это необходимо.

Создайте обобщенную функцию, в которую вы передаете ListObject вместе с именами столбцов Key и Item или индексами. Вернуть словарь

Читайте также: