Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Vytvoření makra v Excelu

Ahoj,
snažím se tu sepsat makro pro Excel 2010, ovšem syntaxe VBA mě poněkud vytáčí a pro tento konkrétní případ mi můj oblíbený postup "nahraj a uprav" neposlouží. Najde se dobrá duše, která pomůže? Jedná se pouze o výřez z komplexnějšího úkolu - zbytek bych pak už zvládnul sám, když uvidím, jak na to. Funkcí jsem nepřišel, jak to udělat.

O co mi jde (přiložený vzorový XLSX):
Na listu "Summary" je mnoho sloupečků, vždy se jedná o datum inkrementálně navýšené o jednu minutu (řádek 3).
Cílem je:

1. Přečíst si datum a čas v buňce A3 na listu "Summary"
2. Přepnout na list "Intervals"
3. Pro všechny řádky od čtvrtého níže se podívat, jestli je hodnota přečtená v bodu 1 (list Summary) součástí intervalu specifikovaného sloupečky B a C. Pokud ano, přičte se na listu Summary k číslu v buňce A4 (tedy pro ono datum) jednička za každý splněný řádek. Toto se zopakuje pro všechny Items na listu "Items". Detekce konce listu Items nechť se provede detekcí prázdné buňky v libovolném sloupečku.

To celé se pak opakuje, pouze si v bodu 1 nahraďte A3 za B3 atd. Zopakuje se to celé tolikrát, kolik sloupečků na listu "Summary" je - k detekci posledního sloupečku nechť se použije prázdná hodnota sloupečku následujícího.

Data jsou očištěna a připravena, nemělo by být nutné ošetřovat kolizní stavy a errory. Nicméně řádků a sloupců bude opravdu mnoho. Možná až ke čtvrt milionu - snad to proměnné rozdýchají.

Ještě to tu zkouším zpracovat kontingenční tabulkou, ale zatím bez úspěchu.

Děkuji!

Předmět Autor Datum
Zatím nikdo nic, tak si dovolím nabídnout nouzové řešení pomocí vzorců (makro dohromady nedám). 1) n…
Siki83 27.01.2012 05:19
Siki83
Na toto vôbec nepotrebuješ makro - budú stačiť obyčajné vzorce. V každom prípade si ale najprv uprav… poslední
los 27.01.2012 18:52
los

Zatím nikdo nic, tak si dovolím nabídnout nouzové řešení pomocí vzorců (makro dohromady nedám).
1) není jisté, že sem zadání pochopil správně
2) na listě Summary bylo třeba vytvořit nové hodnoty data pomocí fcí datum a čas. Vzorec je možné roztáhnout, ale při přechodu z 6.10.11 23:59 na 7.10.11 0:00 je nutné ručně editovat fci datum (změnit hodnotu pro den ze 6 na 7).
3) počet výskytů data na listě Intervals se bere z obou sloupců B a C

Pokud sem totálně mimo mísu, tak se omlouvám za spam.

Na toto vôbec nepotrebuješ makro - budú stačiť obyčajné vzorce. V každom prípade si ale najprv uprav výpočet časov v treťom riadku, pretože so súčasným vzorcom sa v každom ďalšom stĺpci zvyšuje chyba zo zaokrúhľovania - namiesto vzorca "=A3+$A$1" použi "=$A3+$A$1*COLUMN(A:A)".

Vzorec pre spočítanie časových intervalov, do ktorých patrí čas v bunke A3 by potom mohol pre Excel 2007 a novší vyzerať napríklad takto:

=COUNTIFS(Intervals!$B$4:$B$35;">="&A$3;Intervals!$C$4:$C$35;"<="&A$3)

Ak to potrebuješ aj pre staršie verzie Excelu, tak takýto vzorec sa dá tiež napísať pomocou funkcie SUMPRODUCT (česky SOUČIN.SKALÁRNÍ), prípadne ako maticový vzorec.

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