Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/поиск строки в таблице - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » поиск строки в таблице (Макросы/Sub)
поиск строки в таблице
Serega-Sol Дата: Пятница, 28.05.2021, 11:09 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Здравствуйте!
Подскажите пож-та, есть ли альтернатива перебору всех строк таблицы в цикле для задачи поиска строки в таблице? Т.е. есть строка с значением, на листе есть таблица (границы таблицы, если нужно, можно узнать). Нужно узнать есть ли значение строки в таблице.
Можно перебором в цикле, но таблица большая и очень много нужно проверить строк. Можно ли одной командой сделать эту проверку?
Спасибо!
 
Ответить
СообщениеЗдравствуйте!
Подскажите пож-та, есть ли альтернатива перебору всех строк таблицы в цикле для задачи поиска строки в таблице? Т.е. есть строка с значением, на листе есть таблица (границы таблицы, если нужно, можно узнать). Нужно узнать есть ли значение строки в таблице.
Можно перебором в цикле, но таблица большая и очень много нужно проверить строк. Можно ли одной командой сделать эту проверку?
Спасибо!

Автор - Serega-Sol
Дата добавления - 28.05.2021 в 11:09
китин Дата: Пятница, 28.05.2021, 11:15 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 7013
Репутация: 1073 ±
Замечаний: 0% ±

Excel 2007;2010;2016
без файла сказать трудно. Попробуйте Find


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
Сообщениебез файла сказать трудно. Попробуйте Find

Автор - китин
Дата добавления - 28.05.2021 в 11:15
Serge_007 Дата: Пятница, 28.05.2021, 11:18 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2748 ±
Замечаний: ±

Excel 2016
Здравствуйте

есть ли значение строки в таблице
Используйте[vba]
Код
Application.WorksheetFunction.Match
[/vba]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЗдравствуйте

есть ли значение строки в таблице
Используйте[vba]
Код
Application.WorksheetFunction.Match
[/vba]

Автор - Serge_007
Дата добавления - 28.05.2021 в 11:18
Serega-Sol Дата: Пятница, 28.05.2021, 11:56 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

немного не пойму как работает этот метод
[vba]
Код
Application.WorksheetFunction.Match
[/vba]
на листе есть табл в А1:А30, пытаюсь найти в ней строку st

[vba]
Код
With ThisWorkbook.Worksheets("Маркеры")

st = "маркер_1"
n = WorksheetFunction.Match(st, .Range(.Cells(1, 1), .Cells(.Range("A1").CurrentRegion.Rows.Count, 1)))

End With
[/vba]
n = 1, если st = первой строки таблицы, но почему то n = последней строки во всех остальных случаях.
Таблица будет добавляться, поэтому крайнюю строку нужно рассчитать
[vba]
Код
.Range("A1").CurrentRegion.Rows.Count
[/vba]
Что не так?


Сообщение отредактировал Serega-Sol - Пятница, 28.05.2021, 11:58
 
Ответить
Сообщениенемного не пойму как работает этот метод
[vba]
Код
Application.WorksheetFunction.Match
[/vba]
на листе есть табл в А1:А30, пытаюсь найти в ней строку st

[vba]
Код
With ThisWorkbook.Worksheets("Маркеры")

st = "маркер_1"
n = WorksheetFunction.Match(st, .Range(.Cells(1, 1), .Cells(.Range("A1").CurrentRegion.Rows.Count, 1)))

End With
[/vba]
n = 1, если st = первой строки таблицы, но почему то n = последней строки во всех остальных случаях.
Таблица будет добавляться, поэтому крайнюю строку нужно рассчитать
[vba]
Код
.Range("A1").CurrentRegion.Rows.Count
[/vba]
Что не так?

Автор - Serega-Sol
Дата добавления - 28.05.2021 в 11:56
Serge_007 Дата: Пятница, 28.05.2021, 12:14 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2748 ±
Замечаний: ±

Excel 2016
не пойму как работает этот метод
Метод WorksheetFunction. ПОИСКПОЗ (Excel)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
не пойму как работает этот метод
Метод WorksheetFunction. ПОИСКПОЗ (Excel)

Автор - Serge_007
Дата добавления - 28.05.2021 в 12:14
Serega-Sol Дата: Пятница, 28.05.2021, 13:05 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

извиняюсь, не разберусь...
в этом коде
[vba]
Код
n = WorksheetFunction.Match("маркер_4", ThisWorkbook.Worksheets("Маркеры").Range("A1:A30"), 0)
[/vba]
переменной n возвращается 4 - это номер строки в табл. Т.е. строка "маркер_4" в таблице есть. Все норм.
Но выскакивает на ошибку, если строки в таблице нет. Напр:
[vba]
Код
n = WorksheetFunction.Match("привет", ThisWorkbook.Worksheets("Маркеры").Range("A1:A30"), 0)
[/vba]
Как мне записать условие по обработке "если искомой строки нет в таблице, то выполнить некие действия..."?
Спасибо.
 
Ответить
Сообщениеизвиняюсь, не разберусь...
в этом коде
[vba]
Код
n = WorksheetFunction.Match("маркер_4", ThisWorkbook.Worksheets("Маркеры").Range("A1:A30"), 0)
[/vba]
переменной n возвращается 4 - это номер строки в табл. Т.е. строка "маркер_4" в таблице есть. Все норм.
Но выскакивает на ошибку, если строки в таблице нет. Напр:
[vba]
Код
n = WorksheetFunction.Match("привет", ThisWorkbook.Worksheets("Маркеры").Range("A1:A30"), 0)
[/vba]
Как мне записать условие по обработке "если искомой строки нет в таблице, то выполнить некие действия..."?
Спасибо.

Автор - Serega-Sol
Дата добавления - 28.05.2021 в 13:05
Serge_007 Дата: Пятница, 28.05.2021, 13:20 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2748 ±
Замечаний: ±

Excel 2016
если искомой строки нет в таблице, то выполнить некие действия

[vba]
Код
On Error Resume Next
[/vba]или[vba]
Код
On Error GoTo ErrorHandler
[/vba]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
если искомой строки нет в таблице, то выполнить некие действия

[vba]
Код
On Error Resume Next
[/vba]или[vba]
Код
On Error GoTo ErrorHandler
[/vba]

Автор - Serge_007
Дата добавления - 28.05.2021 в 13:20
Serega-Sol Дата: Пятница, 28.05.2021, 13:43 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

да, спасибо. Получилось.
 
Ответить
Сообщениеда, спасибо. Получилось.

Автор - Serega-Sol
Дата добавления - 28.05.2021 в 13:43
Serega-Sol Дата: Пятница, 28.05.2021, 18:52 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

Serge_007, снова затык у меня, помоги пож-та.
Не могу понять почему не работает этот код:
[vba]
Код
n = 0: n = WorksheetFunction.Match("маркер_1", rg, 0) 'проверяем - есть ли строка (элемент массива) в таблице с названием маркеров
n = 0: n = WorksheetFunction.Match(mas(l), rg, 0) 'проверяем - есть ли строка (элемент массива) в таблице с названием маркеров
[/vba]
при пошаговом выполнении первая строка возвращает значение "4" - тут все верно, а вот вторая строка возвращает 0.
элемент массива mas(l) так же равен "маркер_1". Т.е. Match работает, если указана строка явно, а если в виде переменной, то нет.
Массив определил так:
[vba]
Код
Dim mas() As String
[/vba]
Так то же не работает:
[vba]
Код
s = mas(l)
n = 0: n = WorksheetFunction.Match(s, rg, 0) 'проверяем - есть ли строка (элемент массива) в таблице с названием маркеров
[/vba]
rg это диапазон ячеек:
[vba]
Код
Set rg = .Range(.Cells(1, 1), .Cells(.Range("A1").CurrentRegion.Rows.Count, 1))
[/vba]
Почему так получается?
Спасибо.


Сообщение отредактировал Serega-Sol - Пятница, 28.05.2021, 18:53
 
Ответить
СообщениеSerge_007, снова затык у меня, помоги пож-та.
Не могу понять почему не работает этот код:
[vba]
Код
n = 0: n = WorksheetFunction.Match("маркер_1", rg, 0) 'проверяем - есть ли строка (элемент массива) в таблице с названием маркеров
n = 0: n = WorksheetFunction.Match(mas(l), rg, 0) 'проверяем - есть ли строка (элемент массива) в таблице с названием маркеров
[/vba]
при пошаговом выполнении первая строка возвращает значение "4" - тут все верно, а вот вторая строка возвращает 0.
элемент массива mas(l) так же равен "маркер_1". Т.е. Match работает, если указана строка явно, а если в виде переменной, то нет.
Массив определил так:
[vba]
Код
Dim mas() As String
[/vba]
Так то же не работает:
[vba]
Код
s = mas(l)
n = 0: n = WorksheetFunction.Match(s, rg, 0) 'проверяем - есть ли строка (элемент массива) в таблице с названием маркеров
[/vba]
rg это диапазон ячеек:
[vba]
Код
Set rg = .Range(.Cells(1, 1), .Cells(.Range("A1").CurrentRegion.Rows.Count, 1))
[/vba]
Почему так получается?
Спасибо.

Автор - Serega-Sol
Дата добавления - 28.05.2021 в 18:52
Serega-Sol Дата: Суббота, 29.05.2021, 09:23 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 23
Репутация: 0 ±
Замечаний: 0% ±

разобрался. В конце строки для поиска был символ Chr(13), поэтому строка не находилась в таблице.
 
Ответить
Сообщениеразобрался. В конце строки для поиска был символ Chr(13), поэтому строка не находилась в таблице.

Автор - Serega-Sol
Дата добавления - 29.05.2021 в 09:23
Мир MS Excel » Вопросы и решения » Вопросы по VBA » поиск строки в таблице (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!