vlookup v excelu neprovádí automatickou konverzi typu. Je tedy nutné hodnoty ošetřit na listu nebo provést konverzi přímo ve vzorci tak aby se shodoval type hodnoty v tabulce a hledané hodnoty.
O tom, který přístup lepší, by se mohla vést dlouhá debata. Automatické konverze nemám rád a navíc někdy je těžké je obejít - pracuji dost s 18ti číselnými identifikátory - automatická konverze výpočty zmrší a ve funkcích typu sumif, coutif o ní moc lidí ani neví.
Obecně smíšené typy ve vyhledávacím klíči nejsou dobrým nápadem (nikde). Těch problémů je docela dost. Společným typem pro číslo i text je text, tj. pokud není klíč vždy číselný, hodnotu v tabulce převádím na text a hledanou hodnotu nastavuji ve vzorci (u klíčů typu '000121' záleží na okolnostech, obvykle preferuji textový tvar). Potom hledání vypadá:
VLOOKUP("'" & a1; b1:xxx ...)
nebo např. maticově:
index(d1:d50; match("'" & a1; b1:b50; 0)
Nevýhodou ale je, že pokud je požadována přibližná shoda, je pořadí řádků obecně závislé na prostředí.
Opačný přístup, tj. text nechat textem a číslo v textu převádět na číslo vede ke složitějším vzorcům. Funkce value text vyzmizíkuje a pak nic dobrého nenajdete.
Lze, ale nedoporučuji, nastavit obě strany, maticově,
index(d1:d50; match("'" & a1; "'" & b1:b50; 0)
Při větší tabulce je to pomalé, konvertuje se větší objem dat v každém výpočtu, obtížně se dá uhlídat pořadí v tabulce a pak je nezbytné použití sekvenční hledání (přesná shoda) místo rychlého binárního...