Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 15. 5. 2012 19:24:27

pkopecky
Člen
Registrace: 15. 5. 2012
Příspěvků: 19

Porovnání podle datumu - VYŘEŠENO

Prosím o pomoc, mam dva listy plné dat, kde jsou číselné hodnoty seřazeny podle datumu a času. Ve struktuře Sloupec A) dd.mm.rrrr hh:mm:ss , sloupec B) až AD) obsahuje číselné hodnoty.(řádků je přes 30 000)
Potíž je v tom že potřebuji porovnat hodnoty odpovídající stejnému datumu i času, ale bohužel občas v v jednom z listů schází záznam z určitého času.
Např.
list 1)
        sloupec A       sloupec B         sloupec c
01.05.2012 15:30:00      158956            2369785 
01.05.2012 15:32:00         546              46631
01.05.2012 15:34:00      574646            1238774
01.05.2012 15:36:00       64664             346866

list 2)
      sloupec A       sloupec B         sloupec c
01.05.2012 15:30:00      159856             785
01.05.2012 15:34:00       46234            5174
01.05.2012 15:36:00       64564             366
01.05.2012 15:38:00         648            6464


třeba zde v druhém souboru schází záznam s času 15:32 a já potřebuji abych na obou listech měl na jednom řádku např. č.125 hodnoty ze stejného času a datumu. A pokud v jednom z listů daný záznam chybí tak odpovídající řádek nechat prázdný aby na dalších řádcích čas a číslo řádku opět sedělo.
Můžete mi prosím někdo poradit jak toto seřazení provést?

Moc děkuji


____________________________________________________

Značím jako vyřešené


;o)

Editoval sedlacekdan (17. 5. 2012 17:50:39)

Offline

#2 15. 5. 2012 21:46:43

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 806

Re: Porovnání podle datumu - VYŘEŠENO

Postup pro jeden směr:

Pokud naleznete hodnoty, které na jsou ve sloupci A na listu2 navíc proti Listu 1, stačí tyto hodnoty doplnit na konec sloupce A Listu 1 a potom celý list  setřídit podle sloupce A.

Jde tedy je o to, jak nalézt datum a čas, který je na listu 2 navíc.

Zkopírujte sloupce A z listu 2 do sloupce A pomocného listu. Do buňky B2 napište vzorec

=ISNA(MATCH(A2;$List1.$A$2:$a$30000;0))

a zkopírujte ho do celého sloupce B.

Pokud je výpočet pomalý, lze ho, pokud bude seznam na listu 1 setříděný, o několik řádů zrychlit vzorcem:

=INDEX($List1.$A$2:$A$30000;MATCH(A2;$List1.$A$2:$A$30000))<>A2


Řádky, ve kterých je ve sloupci B hodnota PRAVDA, obsahují hledané hodnoty.

Druhý list doplníte obdobně

Offline

#3 15. 5. 2012 23:03:23

pkopecky
Člen
Registrace: 15. 5. 2012
Příspěvků: 19

Re: Porovnání podle datumu - VYŘEŠENO

Ip.
moc děkuji za pomoc.
Něž jste odpověděl tak jsem našel funkci VLOOKUP která mi posloužila výborně. Ale mam potíž že i když v obou listech existuje stejné datum a čas tak tato funkce jej nedokáže nalézt. A to zcela náhodně.
Ale pokud použiji manuální hledání Ctrl+C (nenalezeného datumu) a Ctrl+F tohoto datumu v listu kde VLOOKUP má hledat tak datum je nalezen.
Kde může být problém?
Všechna data a hodnoty k ním přiřazená jsou generována softwarem tudíž překlep je vyloučen.

děkuji

Offline

#4 16. 5. 2012 09:49:03

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 806

Re: Porovnání podle datumu - VYŘEŠENO

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.

Offline

#5 16. 5. 2012 19:30:32

pkopecky
Člen
Registrace: 15. 5. 2012
Příspěvků: 19

Re: Porovnání podle datumu - VYŘEŠENO

moc děkuji za rady yikes)

Offline

Zápatí