2010-09-20 2 views

ответ

2

Новее AGGREGATE¹ function может выбирать совпадения первого, второго, третьего и т. Д., Заставляя несоответствия в состоянии ошибки и игнорируя ошибки. Измените этот метод с помощью EXACT function, чтобы выбрать регистр с учетом регистра.

nam  date   code 
bob  19-Oct-2015  001 
BOB  02-Nov-2015  002 
boB  28-Oct-2015  002 
Bob  24-Oct-2015  004 
bOB  27-Oct-2015  005 
bOb  21-Oct-2015  006 

Pick Боб и ЛПП из смеси с,

=INDEX(B$2:B$7, AGGREGATE(15, 6, ROW($1:$6)/EXACT($A$2:$A$7, $E2), 1)) 

Заполните вниз и вправо по мере необходимости.

Case sensitive VLOOKUP


¹ AGGREGATE function была введена с Excel 2010. Он не доступен в более ранних версиях.

+0

Jeepers kreepers –

-1

Моя первая мысль использовать функцию EXACT(), чтобы проверить результат ВПР:

=IF(EXACT(VLOOKUP(A2,$C$2:$C$4,1,FALSE),A2),VLOOKUP(A2,$C$2:$C$4,1,FALSE),0) 

Где A2 = значение, которое вы хотите посмотреть и C2: C4 является диапазон, содержащий значения искать.

Это вернет результат vlookup и подтвердит, что оно соответствует случаю значения, которое вы хотите найти. Он вернет результат vlookup, если они соответствуют случаю, или 0 в противном случае.

EDITED

На самом деле, этот ответ не будет работать. Если ваш список содержит «Боб» и «Боб», он найдет первый и только проверит это. Извините, я об этом не думал.

+0

Я пробовал это вчера, и Дженни сказала, что это не сработало, но, может быть, вам повезет больше, чем я. – LittleBobbyTables

1

похоже, что функция vlookup не имеет значения - так что Боб такой же, как bob. Вы можете использовать код() для преобразования в ASCII и поиск кода. Это сделает ваш поиск более сложным, а code() возвращает код для первого элемента в строке.

0

Если значение, которое вы возвращаете, является числом, а не текстом, и если первый столбец вашей lookup_table уникален («bob» не отображается более одного раза), вы можете использовать формулу массива, такую ​​как

=SUM(EXACT(A3:A6,"bob")*(B3:B6)) 

Введите с помощью Control + Shift + Enter, а не просто введите. Он суммирует все в B3: B6, где A3: A6 - это точно «bob». Поскольку есть только один «bob», он суммирует только одну ячейку. Поскольку он использует SUM, возвращаемые строки не будут работать.

Если «bob» появляется более одного раза, он суммирует все значения, которые вы, вероятно, не хотите.

Update

Если значение вы отрываясь не является числом, вы могли бы использовать формулу массива, чтобы найти строку, затем обернуть функцию INDEX вокруг него. Предположим, ваши данные A3: B6 и вы хотите вывести данные из столбца B на основе точного соответствия в столбце A.

=INDEX(A3:B6,SUM(EXACT(A3:A6,"bob")*(ROW(B3:B6)))-2,2) 

Ввод с ЭПС. Часть SUM возвращает строку, в которой находится «bob». Вы должны вычесть 2 из него, потому что данные начинаются с A3 (вычитайте один меньше, чем строка, где начинаются данные). Функция INDEX использует эту строку и тянет из столбца B.

+0

Нет, у меня есть письма –

+0

@dick спасибо. У меня есть один столбец на одном листе, но в другом столбце (столбец, который я сопоставляю на другом листе, поэтому урская формула не работает в моем случае). –

+0

И не будет VLOOKUP с учетом регистра или нет. Вы можете рассмотреть вопрос о редактировании вопроса с дополнительной информацией о том, как данные выложены. Я уверен, что есть решение. –

4

Ключевой вопрос для полного решения здесь - это, как замечает Дик Куслайка: избегать остановки поиска, если совпадение без учета регистра найдено до чувствительного к регистру.

Запись в блоге Case Sensitive Lookup in Excel претендует на решение этой проблемы с использованием функций INDEX и MATCH (оригинальная информация любезно предоставлена ​​Peo Sjoblom). В комментариях есть и некоторые альтернативы.

+0

FWIW, это работает, но только если вы можете использовать формулы массива (нажатие ctrl-shift-enter для ввода формулы). Проблема была в том, что библиотека POI, которую я использую для создания файлов excel, не поддерживает эти типы формул. Я не нашел другого решения, которое использовало формулы без массива, поэтому я был вынужден сделать решение, которое мне не нравится, но это единственный вариант, который у меня был. Я предварительно обрабатываю все значения и добавляю символы Unicode \ u0097 перед каждым строчным символом (для каждого поля, которое должно быть чувствительным к регистру). Эти персонажи невидимы, но их сравнивает MATCH в excel. – HappyEngineer

+0

Эта формула, предложенная в комментариях, представляется простейшим решением: '= LOOKUP (1,1/EXACT (A1: A6, D1), B1: B6)' –

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