Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Excel - PasteSpecial a VBA problem

Zdravim,
potreboval bych poradit, s jednou "drobnosti".

Mam textovy soubor, ktery pomoci VBA na tlacitku naimportuju do noveho excel workbooku a pres funcki "Range().Copy/PasteSpecial" vkopiruju do druheho excel souboru. Problem je v tom, ze v cilovem "Sheetu" mam ted 2 sloupce... Pro jednoduchost vezmeme, ze kopiruju jen jednu bunku z textoveho souboru s hodnotou treba 10(tedy cislo).

Prvni bunka A1 obsahuje nakopirovana data pomoci f-ceVBA: 'Range("A1").PasteSpecial Paste:=xlValues', jedna se o cisla kopirovana do sloupce s preddefinovanym formatem 'Text'(ten sloupec ma format cely) a jako textove se take viditelne ulozi (hodnota 10 je zarovnana vpravo).

Ve druhem sloupci(bunka B1) je Excel funce, ktera kontroluje hodnotu daneho pole A1 a hleda ji v druhem sheetu v tabulce a podle toho doplnuje nejaky jiny hodnoty. (V sheetu 'Pokus' je hodnota ciselna ulozena ve formatu textu)
=IF(A1<>"";(VLOOKUP($A1;Pokus!A:H;8;FALSE)) ;"----")

Problem je v tom, ze kdyz napriklad zadam do bunky A1 v cilovem sheetu hodnotu 10, tak mi vyse uvedena funkce vyjede hodnotu "ok", ale pokud hodnotu '10' na to same misto nakopiruju pomoci VBA, tak se objevi retezec '---' nebo #N/A# (podle toho jestli pouzivam funkci ISNA nebo normalni IF na kontrolu prazdnosti pole). Kdyz pak najedu na hodnotu '10' v bunce A1 F2(Edit) a pak Enter, tak prestoze se ani viditelny format bunky ani nic jineho nezmeni, tak se najednou v B1 objevi kyzena hodnota 'ok' :-D Je problem v tech formatech a jak to mam sakra spravit at to nemusim delat rucne kdyz tech zaznamu je 10 000 a potrebuju tu funkci na naimportovany data jen roztahnout a aplikovat ?

Předmět Autor Datum
Problém je v tom, že porovnávané hodnoty majú rôzny dátový typ, a preto sa nerovnajú. Zmena formátu…
los 23.10.2008 20:33
los
Diky, ja jsem ten format vcera vytahl do noveho skryteho sloupce C (tedy '=TEXT(A1;0)') a muj vzorec… poslední
Slahoun 24.10.2008 17:08
Slahoun

Problém je v tom, že porovnávané hodnoty majú rôzny dátový typ, a preto sa nerovnajú. Zmena formátu bunky nemení dátový typ hodnoty, ktorá sa v nej nachádza. Dôsledkom je, že napr. číselná hodnota 10 naformátovaná ako text síce vyzerá rovnako ako textová hodnota 10, napriek tomu sa tieto hodnoty nerovnajú.

Riešenie závisí od toho, akého typu sú hodnoty, ktoré chceš porovnávať. Pred porovnaním je potrebné hľadanú hodnotu z bunky A1 prekonvertovať na rovnaký dátový typ, aký sa nachádza v prehľadávanej tabuľke. Vzorec by mohol vyzerať napríklad takto:

=IF($A1<>"";IF(ISERR(VALUE($A1));VLOOKUP($A1;Pokus!A:H;8;FALSE);VLOOKUP(VALUE($A1);Pokus!A:H;8;FALSE));"----")

Zpět do poradny Odpovědět na původní otázku Nahoru