Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/40: Рейтинг темы: голосов - 40, средняя оценка - 4.90
-12 / 3 / 0
Регистрация: 02.04.2012
Сообщений: 347

Поиск по таблице Excel

25.07.2016, 10:56. Показов 7575. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Люди, здравствуйте.

Задача такая: есть справочник - это просто таблица на листе экселя. Надо идти по одному столбцу, пока не найду совпадающее с искомым значением. Потом взять из той же строки, но другого столбца, соответствующее значение.
Довольно просто.

Однако.
1) Я не умею искать сами таблицы и получать к ним доступ. То есть я не могу найти свою таблицу иначе, как через ActiveSheet.Range("Таблица1"). Однако, это мне не подходит. Надо что-то такое, что вернет мне "таблицу" в переменную, чтобы мог работать с ней.

2) Я не знаю функции поиска. Есть какой-то сложный метод ".Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)" - но я его не могу проверить (см. п.1).
Да и даже если бы я имел таблицу, что-то сложноват этот метод для понимания.

Помогите, пожалуйста.
Не может эта задача иметь сложного решения. Оно должно быть простое.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.07.2016, 10:56
Ответы с готовыми решениями:

Поиск по таблице excel
Всем привет. У меня возник вопрос: Как осуществить поиск по столбцу таблицы excel через форму vba. На форме есть textbox1 для ввода кода...

Поиск данных в таблице Excel
Дана самая простая таблица, содержащая данные, типа: ФИО человека, дата рождения, номер телефона. Как организовать поиск данных в такой...

Поиск макросом дубликатов в таблице excel
Регистрация: 19.01.2009 Сообщения: 2 Репутация:10 поиск макросом дубликатов в таблице эксель Приветствую появилась...

9
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
25.07.2016, 11:17
ВПР() - самое простое.
Это функция листа.
1
-12 / 3 / 0
Регистрация: 02.04.2012
Сообщений: 347
25.07.2016, 12:47  [ТС]
Hugo121, благодарю. Хоть это не ответ, но это сподвигло найти ответ.

Visual Basic
1
2
3
4
5
6
function FindIn(table as Range, findVal as string)
on error ErrHandler
FindIn = Application.WorksheetFunction.VLookup( findval, Table, 2, False )
ErrHandler:
FindIn = "Error"
end function
Вот эта штука ищет
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
25.07.2016, 12:53
Ну конечно не ответ - вопроса ведь небыло!
А эту штуку просьба опубликовать в рабочем виде, раз уж написали. Хотя не вижу в ней смысла - ну разве что на 2 аргумента меньше писать...
0
17 / 14 / 6
Регистрация: 21.04.2009
Сообщений: 65
25.07.2016, 13:03
Делал для себя такой макрос (почти без встроенных функций VBA и не идеал с точки зрения программирования, но свою задачу я решил):
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Sub Замена_альфы_по_типу_крепления()
' перед началом работы макроса надо выделить диапазон ячеек в котором будем менять данные
' не меняет данные если в выделенном диапазоне есть склеенные ячейки (в тех строках которые содержат склеенные ячейки)
' Замена_альфы_по_типу_крепления Макрос
 
    Application.EnableEvents = False 'Отключаем события приложения
 
    Dim curRange As Range 'объявляем переменную для хранения текущего выделенного диапазона ячеек
    Set curRange = Selection 'запоминаем выделенный диапазон ячеек текущего активного окна
    
' Определяем координаты первой ячейки выделенного диапазона
    Dim firstRow As Long 'объявляем переменную для хранения номера первой строки выделенного диапазона
    firstRow = curRange.Row 'запоминаем номер первой строки выделенного диапазона
    
' Определяем количество строк и ячеек в выделенном диапазоне
    Dim rowsNum As Long 'объявляем переменную для хранения количества строк выделенного диапазона
    rowsNum = curRange.Rows.Count 'запоминаем количество строк выделенного диапазона
    
    Dim curR As Long 'объявляем переменную для хранения номера текущей обрабатываемой строки
 
    Dim colPattern As String 'индекс столбца ячейки, по содержимому которой макрос определяет нужно ли делать замену
    Dim rowPattern As Long 'номер строки ячейки, по содержимому которой макрос определяет нужно ли делать замену
    Dim newValue As String ' новое значение альфы
    newValue = InputBox("Введите через пробел буквенный индекс столбца и номер строки ячейки с образцом для сравнения:")
    If Len(newValue) < 3 Then Exit Sub
    colPattern = Trim((Left(newValue, InStr(newValue, " ") - 1)))                               ' запоминаем столбец образца
    rowPattern = Trim(Right(newValue, Len(newValue) - InStrRev(newValue, " ")))       ' запоминаем строку образца
    
    Dim colOldValue As String ' индекс столбца с изменяемым значением
    colOldValue = InputBox("Введите буквенный индекс столбца, с изменяемыми ячейками:")
    
    newValue = InputBox("Введите новое значение изменяемой величины:")
    If Len(newValue) <= 0 Then Exit Sub
    
    ' Проходим в цикле по всем строкам выделенного диапазона
    For curR = firstRow To (firstRow + rowsNum - 1)
        If Cells(curR, colPattern).Value = Cells(rowPattern, colPattern).Value Then
            ' выделяем цветом ячейку образец
            Cells(curR, colPattern).Select
            ActiveCell.Interior.Color = vbCyan
            ' выделяем цветом ячейку с изменённым альфа
            Cells(curR, colOldValue).Select
            ActiveCell.Interior.Color = vbGreen
            ' меняем альфу
            Cells(curR, colOldValue).Value = Val(s)
        End If
    Next curR
 
' Включаем обратно события приложения
    Application.EnableEvents = True
    
End Sub
0
-12 / 3 / 0
Регистрация: 02.04.2012
Сообщений: 347
25.07.2016, 15:37  [ТС]
Люди, как получить таблицу, если она находится на другом листе? И мы о ней знаем только ее имя.
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
25.07.2016, 16:13
А какие проблемы?
Visual Basic
1
=VLOOKUP(A1,имя,2,0)
0
-12 / 3 / 0
Регистрация: 02.04.2012
Сообщений: 347
26.07.2016, 08:50  [ТС]
Люди, появилась проблема - мне сказали, что теперь надо искать не строку, а маску (то есть в таблице хранятся маски).
И все идет насмарку. Ибо получать строку - это легко. А как одновременно и ходить по таблице, и с маской сверяться?
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
26.07.2016, 09:08
ВПР() может использовать маску.
0
-12 / 3 / 0
Регистрация: 02.04.2012
Сообщений: 347
26.07.2016, 09:50  [ТС]
Hugo121, нет. У меня обратная задача. Надо не по маске искать, а саму маску искать.
То есть у меня справочник масок. А строка одна.

Пришлось сделать в лоб - просто пробежать по всем ячейкам столбца и сравнивать в регексп.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.07.2016, 09:50
Помогаю со студенческими работами здесь

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

Поиск по части наименования в таблице и перевод курсора в соответствующую область в другой таблице
Добрый день. Есть файл, в нем на листе Label_base вызывается по кнопке форма. Далее задуман такой алгоритм: - юзер вводит в...

Поиск в таблице Excel
Задача в том чтобы введенные данные в поле сравнивались с таблице в exel т.е. я ввожу данные в строку и при нажатии кнопки искало...

Outlook - поиск в Excel-таблице
Добрый день! Вопрос с одной стороны кажется простым. Впрочем, он, вероятно, с любой стороны простой. Навыков не хватает... Суть...

Поиск записей в одной таблице, где значения ключевого поля не совпадают с полем в другой таблице
Имеется Access XP, надо создать запрос для поиска записей в таблице ТОВАРЫ,где значения ключевого поля (Артикул) не совпадают со значениями...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru