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() строку:

        на строку:

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

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