VBA Excel. Поиск значения в таблице

Поиск неизвестного значения в 3 столбце таблицы по известным значениям, расположенным в 1 и 2 столбцах той же строки, из кода VBA Excel.

Поиск значения в таблице

Исходные данные размещены в следующей таблице:

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

При выборе возраста и страны из раскрывающихся списков (ComboBox), в текстовое поле (TextBox) автоматически записывается значение из 3 колонки, соответствующее первым двум критериям.

Код поиска значения

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

В разделе «Declarations» модуля пользовательской формы объявляем общую переменную для всех процедур:

В эту переменную будет записываться номер последней строки исходной таблицы с данными.

Далее добавляем код инициализации формы, который будет выполняться перед ее отображением на экране:

Теперь необходимо добавить код VBA Excel, который будет искать значение в 3 столбце таблицы при изменении значения в любом из полей со списками. Для этого будем использовать процедуры событий Change объектов ComboBox1 и ComboBox2 (тексты внутри процедур одинаковые):

Результат работы кода:

Таблица с объединенными ячейками

Если предыдущий код VBA Excel применить к следующей таблице:

в списке объекта ComboBox2 на второй позиции появится пустая строка, а результат в текстовом поле не всегда будет соответствовать действительности.

От пустой строки будем избавляться, удаляя ее из коллекции сразу после добавления:

Чтобы поиск значения в 3 столбце всегда завершался верным результатом, заменим код процедур ComboBox1_Change и ComboBox2_Change на следующий:


Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

2 комментария для “VBA Excel. Поиск значения в таблице”

  1. Добрый день!

    Мне нужно, чтобы второй комбобокс выбирал числа вместо текста. Какие изменения должны быть в коде?
    Пробовал, как здесь, но не работает.
    Ячейки таблицы не объединены.

    1. Евгений

      Добрый день! Если в ячейке содержится число, его надо преобразовать в текст. Замените в процедурах ComboBox1_Change() и ComboBox2_Change() строку:

      на строку:

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

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