Знайдіть текстовий рядок, що не відрізняється від регістру, в межах діапазону комірок


3

У мене є проблема, яку потрібно вирішити в Excel, і я не зовсім впевнений, як це зробити. Я здійснив кілька пошукових запитів в Інтернеті, і не знайшов жодної формули, яка здалася б корисною. Ось ситуація (трохи спрощена для цілей цього питання):

У мене є дані у стовпцях AE. Мені потрібно зіставити дані в клітинках A і B, з даними в CE, і повернути TRUE або FALSE до стовпця F.

Поверніть TRUE, якщо:
- рядок у A знайдений у будь-якому рядку CE.
АБО
- Рядок у B знаходиться в межах будь-якого рядка в СЕ.

В іншому випадку поверніться ЛІЖНЕ.

Рядки повинні відповідати цілим або частковим рядкам у межах діапазону, але функція відповідності повинна бути нечутливою до регістру. Я зробив скріншот прикладу аркуша для довідки.

введіть тут опис зображення

Я впевнений, що мені потрібно буде використовувати IF або на найбільш віддаленому шарі формули, ймовірно, після цього АБО. Тоді, для аргументів АБО, я сподіваюся, що буде використано IFERROR. Але те, що я втрачаю, - це функція, яку я міг би найбільш ефективно використовувати для обробки пошуку в текстових рядках.

Я думаю, що VLOOKUP дуже обмежений. Це може бути працездатним робити цілий рядок проти порівняння цілих рядків, але я впевнений, що він не поверне точних результатів для часткових рядків. ЗНАЙДЕННЯ та ПОШУК видаються обмеженими лише пошуками з однією ціллю та також залежать від регістру. Я припускаю, що я міг би використовувати ВНУТРІШНІЙ або НИЗЬКІ, щоб змусити нечутливість випадків до пошуку, але мені все одно потрібно щось, що може зробити точне часткове узгодження та шукати заданий діапазон комірок.

Чи є якась функція, або комбінація функцій, яка могла б працювати тут?

В ідеалі я хочу це зробити за допомогою прямої формули Excel. Я зовсім не знайомий з VBScript або подібними інструментами, і не маю часу вивчити його для цього проекту.

Відповіді:


2

Це моє брудне рішення, я не впевнений, що це найкраще.

Спробуйте додати тимчасовий стовпець, щоб потім приховати його. І спробуйте перетворити всі дані в малі або великі регістри, а потім слідуйте логіці, яку ви вже зробили.

Просто так:

A2: ABcdeF
B2: =lower(A2) --> abcdef
C2: aBc
D2: =lower(C2) --> abc
E2: =find(D2, B2) --> found
F2: =find('poi', B2) --> not found

Функція VLOOKUP має необов'язковий параметр: range_lookup

Логічне значення (лише TRUE або FALSE), яке вказує, чи потрібно VLOOKUP знаходити точну або приблизну відповідність значенню lookup_value.

http://spreadsheets.about.com/od/excelfunctions/ss/vlookup_2.htm


Я біг ВВР з ІСТИНА і НЕПРАВДА значеннями до, і знайшов «наближене збіг» , щоб бути шлях геть. Я думаю, що вони використовують деяке дійсно ліберальне значення терміна "наближений".
Іссі

Це моя хитрість, будь ласка, спробуйте, і дайте мені знати. Будь ласка, прочитайте мою іншу відповідь у цій темі
Truong Ha

0

Спробуйте поєднати текст цих комірок, це моя хитрість:

A1: a
A2: b
A3: c
B1: ">" & A1 & "<" --> >a<
B2: = B1 & ">" & A2 & "<" --> >a<>b<
B3: = B2 & "<" & A3 & "<" --> >a<>b<>c<

... ви можете автоматизувати за допомогою excel, просто повірте, що це займає менше 1 хв :-)

тому кінцева комірка повинна поєднувати весь текст з усіх комірок

Тоді просто виконайте звичайний пошук, але переконайтеся, що ви включили ">" та "<" до своїх критеріїв, щось подібне

=find(">" & "abc" & "<", $B$3)

і знову це моя брудна хитрість!


Цікава ідея. Як же я "автоматизую" це за допомогою Excel? У мене майже 900 рядків.
Іссі

На жаль, просто перетягніть B3 вниз, excel автоматично скопіює формулу та оновить інші комірки. Або ви навіть можете навести курсор миші на правий нижній кут клітини B3 і двічі клацнути по ньому (ви повинні побачити курсор миші, щоб повернутись до хреста +)
Truong Ha

0

В ідеалі я хочу це зробити за допомогою прямої формули Excel. Я зовсім не знайомий з VBScript або подібними інструментами, і не маю часу вивчити його для цього проекту.

Метод VBA Range.Find існує лише для таких завдань. Прикро було б не використовувати його. :)

Синтаксис

Діапазон. Назад ( що після, LookIn, LookAt , SearchOrder, SearchDirection, MatchCase , MatchByte, SearchFormat)

Нам потрібно лише 3 параметри для вашого завдання. Решту залиште

  • Діапазон : діапазон, в якому потрібно шукати
  • Що: дані для пошуку
  • LookAt: може бути один xlWhole (повний матч) або xlPart (частковий збіг)
  • MatchCase: Вірно, щоб зробити регістр пошуку чутливим. Неправдивий для випадку нечутливого пошуку

Короткий приклад виглядав би так

 Set result = Columns(C:E).find(what:=[A1], LookAt:=xlPart, MatchCase:=false)

Цей код поважає ваші додаткові умови, як-от

  • Перевірте дані зі стовпців A та стовпця B. Якщо одна з них відповідає, поверніть true
  • Поверніться правдою навіть при часткових матчах
  • Ігноруйте великі або малі регістри
  • Повернути справжнє або хибне у стовпці F
Sub SearchMatches()    
For i = 2 To 5    
    On Error Resume Next
    Set checkColA = Columns("C:E").Find(Cells(i, 1), , , xlPart, , , False)
    Set checkColB = Columns("C:E").Find(Cells(i, 2), , , xlPart, , , False)
    On Error GoTo 0        
    If checkColA Is Nothing And checkColB Is Nothing Then
        Cells(i, 6) = False
    Else
        Cells(i, 6) = True
    End If        
Next i    
End Sub

введіть тут опис зображення


Я знаю, що цьому питанню 3 роки, але, можливо, інші знайдуть це корисним
nixda
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.