Перейти к содержимому

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 по тематическим разделам со ссылками на все статьи.

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

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

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

      1. Евгений

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

        на строку:

        1. Здравствуйте!
          Подскажите пожалуйста как можно реализовать поиск по трем значениям:
          например, таблица, в которой строки это дни месяца, а столбцы это температура, в ячейках числовое значение температуры
          Как можно в такой таблице найти дни месяца, у которых и 1, и 17 и 29 числа было +15

    Обсуждение закрыто.