Důvody mne napadají dva:
Sloupce A nejsou setříděné a používáte
vlookup(A2;$List1.$A$2:$A$30000;něco)
nebo
vlookup(A2;$List1.$A$2:$A$30000;něco;1)
Toto hledání je velice rychlé, ale (protože) nehledá sekvenčně, ale nějakou metodou půlení intervalů, zastaví se na první hodnotě, která je větší než hledaná, pak vrátí předchozí hodnotu. Pokud hledaná hodnota je menší než nejmenší hodnota v prohledávaném seznamu, nevrátí logicky nic.
Takto nalezená hodnota nemusí být hledaná.
Toto hledání vyžaduje setříděný seznam.
V nesetříděném seznamu hledejte s konstrukcí
vlookup(A2;$List1.$A$2:$A$30000;něco;0)
(pomalejší)
Kromě toho. Nevím jak, sw generuje časové údaje. Vlastní hodnota, kterou vlookpup porovnává, je ve formě reálného čísla. Rozdíly v tšchto číslech nemusí být vidět. Pokud něco takového může nastat, zkuste setřídit sezmany a použijte konstrukci typu
=if(abs(vlookup(A2+"malé číslo";$List1.$A$2:$A$30000;1;1)-A2)<"malé číslo"); <řádek existuje, ...>;<řádek neexistuje>)
=MATCH(A2+"malé číslo";$List1.$A$1:$A$30000)
Vrátí číslo řádku s největším datumem, který je menší než zadaný.
Kvůli opakovanému prohledávání asi bude lépe vytvořit pomocný sloupec s číslem řádku hodnoty ve druhém seznamu (funkce match)
malou hodnotu volte podle dat. mělo by stačit hodnota cca time(0;0;1)/2, tj 0,5 sec.