2017-02-18 6 views
0

Есть ли способ обрезать параметры поиска с использованием Find перед поиском?Параметры поиска Trim до поиска с использованием Найти

У меня есть файл Excel, который я бы хотел найти, чтобы найти ячейку с определенным словом в ней; каждая ячейка содержит только одно слово. Функция Find нечувствительна к регистру и отлично работает по большей части. Единственный (возможный) недостаток, который я нашел, состоит в том, что ячейка должна содержать ТОЛЬКО слово без начальных и конечных пробелов.

Например: Если я хочу, чтобы найти слова, акустика, используя Find функцию

Dim rng as Range 
rng = ActiveSheet.Range("A1:K100") 
Set foundItem = rng.Find("acoustic") 
if not foundItem Is Nothing Then MsgBox foundItem.Address 

Найдет слово в его многочисленных вариациях - «Acoustic», «АКУСТИЧЕСКАЯ», «АКУСТИЧЕСКАЯ», и т. д., но НЕ найдет его, если у него есть ведущее или конечное пространство, такое как «акустическая» или «акустическая».

Итак, есть ли способ (легко) обрезать пробелы с ячейки перед выполнением поиска? Или мне нужно будет создать функцию, чтобы пройти через диапазон и обрезать в первую очередь?

ответ

0

Вы можете обрезать диапазон до нахождения:

rng.value = Application.Trim(rng.value) 

Или, если диапазон имеет формул, и вы хотите сохранить их:

rng.Formula = Application.Trim(rng.Formula) 
+0

Ничего себе .... вы на всем протяжении этого материала VB. Я знал, что ты можешь обрезать, но понятия не имел, что ты мог бы обрезать весь диапазон таким образом. Это потрясающе. Спасибо! – Apolymoxic

+0

@Apolymoxic приветствуется. Вы можете посмотреть [здесь] (http://stackoverflow.com/questions/42147564/trim-function-remove-spaces-from-cells-using-vba/42148229#42148229) для разных методов обрезки диапазона. –

0

просто установить LookAt параметр Find() метода xlPart

Set foundItem = rng.Find(What:="acoustic", LookIn:=xlValues, lookat:=xlPart, MatchCase=False) 

Вы также можете сделать тот же самый ч в формулах:

Set foundItem = rng.Find(What:="acoustic", LookIn:=xlFormulas, lookat:=xlPart, MatchCase=False) 

и быть информированным, что вы должны всегда явно specifcy LookIn, LookAt, SearchOrder и MatchByte параметры, в противном случае Find() будут использовать свои последние настройки, даже если из Excel UI! (Я счел достаточным для моих целей всегда указывать не менее LookIn и LookAt параметров)

Смежные вопросы