Не более 255 символов на VLOOKUP

12844
zod

Используя Excel 2003, формула:

=VLOOKUP(D1 ,A1:B135, 2) 

терпит неудачу, если длина D1 превышает 255 символов (то есть список имеет некоторый текст длиннее 255 символов, D1 имеет то же текстовое значение, и VLOOKUP возвращает #VALUE!).

МАТЧ, похоже, страдает от того же предела персонажа.

Я не могу найти никакого официального подтверждения этих ограничений, например здесь:

http://office.microsoft.com/en-us/excel-help/vlookup-HP005209335.aspx

или здесь:

http://office.microsoft.com/en-us/excel-help/excel-specifications-and-limits-HP005199291.aspx?CTT=3

Я знаю, что в Excel есть ограничение в 255 по длине текста, используемого в формулах, но он предполагает, что connate должен работать (в данном случае это не так, и я не использую строки в формуле, а ссылаюсь на другую ячейку).

Может ли кто-нибудь подтвердить, что эти ограничения существуют (всегда возможно, что я делаю что-то еще неправильно)?

Что еще более важно, кто-нибудь знает способ обойти их?

Спасибо

3
Подтверждено это поведение в Excel 2003 и 2007. Sux2Lose 13 лет назад 1
Та же проблема (в Excel 2003) wilson 13 лет назад 0
Вот решение, которое отлично сработало для меня: http://stackoverflow.com/questions/13202473/way-to-overcome-excel-vlookup-function-limit-of-256-characters 10 лет назад 0
Проверьте ссылку ниже - отлично работает для меня: http://stackoverflow.com/questions/13202473/way-to-overcome-excel-vlookup-function-limit-of-256-characters 10 лет назад 0

3 ответа на вопрос

2
chris neilsen

Напишите свой собственный поиск в VBA

Вот начало:

Function MyVL(v As Range, r As Range, os As Long) As Variant Dim cl As Range  For Each cl In r.Columns(1).Cells If v = cl Then MyVL = cl.Offset(0, os - 1) Exit Function End If Next End Function 
2
wtaniguchi

Вы всегда можете написать свой собственный VLOOKUP ... но, в качестве альтернативы, вы можете вычислить хеш из значения поиска и использовать его в качестве нового значения поиска.

Могут происходить коллизии, но при использовании довольно приличного хэш-алгоритма, такого как MD5, это не должно быть проблемой.

Чтобы создать хеш-функцию, вы можете использовать идеи из https://stackoverflow.com/questions/125785/password-hash-function-for-excel-vba .

Также есть http://superuser.com/questions/550592/is-there-an-excel-function-to-create-a-hash-value, где OP хочет специально хешировать, поскольку они могут захотеть позже использовать VLOOKUP , ernie 10 лет назад 1
0
Elizabeth

I was searching for exact matches between 2 reports and ran into this. I concatenated the several different fields of one report and another report into one LONG string and then used Vlookup to identify if every field of 1000 records or so matched between the 2 reports. That's when I ran into the problem.

Because it was a one-time thing and I could break it down into smaller chunks by concatenating less than 255 characters into 3 separate columns, I did that and wrote 3 separate lookups and compared the data in 3 chunks rather than all at once. The major drawback is that I had to re-sort by the lookup table (column) I wanted to run the lookup on for each of the 3 sub groups before running each lookup.

Id call my solution perfectly acceptable for a onetime thing, but if I had to do it more than once, I'd look for something more efficient.

Похожие вопросы