Pokud to bude jednorázová práce, tak stačí pomocný sloupec s dotazem
=IF(And(Buňka(-1)=Buňka(tato);Buňka(-2)=Buňka(tato))=1;ROW(-2)&ROW(-1)&Row(tento);IF(Buňka(+1)="";"";Buňka(+1))). Začínat byste měl na 3. řádku ty první dva udělat růčo, nebo předřadit 2 prázdné řádky, jinak hodí vzorec chybu. Když by to nebylo moc "těžké", tak nechat pomocný sloupec na prvním místě a vedle (nejprve smazat vše) a pak vykopírovat další sloupec.
Pokud to nebude dost rychlé, tak si nahrát makro pomocí záznamníku, přejet to vždy makrem. Raději napíšu hned jak postavit takové makro.
1. Uděláte si vzorec, který odzkoušíte na malém počtu řádků.
2. Vykopírujete ho do pravé strany - ne za poslední řádek testovaného sloupce.
3. Nebude vidět, raději hned dejte pod něj barvu pozadí.
3. Původní sloupeček (nejlépe A) se vzorci smažete.
4. Tréning A. - na ostré nahrávání.
a) Budete stát kurzorem mimo vzorce, který jste si schoval.
b) Zapnete nahrávání maker (záznam makra)
c) Přesunete se kurzorem do buňky se vzorcem bez ENTRU !
d) Stisknete INSERT. Nyní musíte ENTROVAT.
e) Vrátíte se do buňky se vzorcem bez ENTRU !
f) Stisknete Ctrl+C (zkopírujete ho viz poznámka) a Enter
g) Ukončete nahávání a uložte to nejlépe pod názvem Postup_1 ap.
h) Otestujte na sloupci s testovanými údaji.
Poznámka :
Enter zaznamená provedení akce, ale odskočí a to se nezaznamená. Dík tomuto se Vám nepodaří plno věcí nahrát tak, aby to fungovalo. Takže při nahrávání vzorce musíte vynechat skok na vlastní buňku se vzorcem. Druhou možností je skočit tam s Entrem, a pak postup udělat stejně. Problém je v tom, že potom na to místo skočí makro vždy a somo sebou vše co tam mělo být tak zlikviduje. Podobná problém dělá INSERT - přepíná se "z" a "do" Edit módu (jen abyste na to nezapoměl a nebyl "mile" překvapen).
Takže možné řešení je v tom skočit někam hodně daleko na konec řádku, nebo sloupce. (Mezi potřebnými a nepotřebnými si skryjeme (sloupce, nebo řádky) tak, aby byly vidět jen potřebné (řádky, nebo sloupce). Pak nahrávat se skokem potvrzeným Entrem. Je to poměrně jednoduché, ale už se mi to povedlo mockrát zvorat. Jde také o to, že Makro může zůstat jen v této podobě. Má totiž po skončení vzorec v paměti.
Takže když spustíte takto ořezané makro, tak ho spouštíte těsně před tím, nežli vyplníte oblast. Do té už pak jen Ctrl+V. Takže to je takovéto "netechnické řešení".
Jde to ale udělat zcela spávně a pro každý případ "délky sloupce" - používat to bez přemýšlení co se má udělat před tím a co pak. Zase když budete mít knihovnu jen s těmito makry, budou dobře popsaná a ve stejném stylu manipulace - tak je to něco jiného.
Druhá část "Tréningu" obsahuje přípravu k manipulaci. Lze to udělat tak, že to jsou 2 (i více) samostatná funkční makra, která po dohotovení spojíte. Jednoduše těsně před End SUB dáte název dalšího makra, které má v práci pokračovat. To ale musíte udělat zásahem do kódu. (Doporučuji se to naučit).
Když však potřebujete udělat něco rychle, a je to "malé", tak se vyplatí nahrávat v jednom kuse.
5. Tréning B. - příprava souboru k nahrávání vzorce.
a) Připravíme si soubor pár řádků a případně sloupců- začátek v A1.
b) Spustíme nahrávání maker.
c) Skočíme na A1 s Entrem (musí odskakovat dolů - někdo to má doprava - to ne!)
d) Vložíme sloupec (A) a stojíme v prázdné buňce.
e) Klidně dáme třeba 10x šipku nahoru, abychom byli na A1 (nebo Ctrl+šipka - 1x)
f) Pro tomuto podobné případy napíšeme do A1 cokoliv (číslo, text - něco)
g) Podle počtu řádků, které potřebujeme předsadit vložíme i další záznamy* (nyní +2)
h) Jsme v A3, ale skočíme o políčko výš (A2). Stiskneme Ctrl+šipku nahoru následně + ENTER.
i) Dáme vložit řádky. (máme vloženy 2 před souborem, v A3 je "něco" v (B3 záznam č.1).
j) Nyní máme na výběr ukončit (pak spojit v kódu), nebo pokračovat.
Poznámka :
Ukončit a pak navázat je bezpečnější, lépe se to testuje......ale pak se musí udělat i další část. Mimo toho se musí už do kódu - což by neměl být problém. Spojit "přípravu" s "nahráním vzorce" a otestovat spolu. Má to ještě výhodu v tom, že lépe pochopíme, co ještě dodělat, aby to bylo "dobré".
V opačném případě bych doporučil pokračovat z druhé části hned s tím, že místo vložení vzorců obarváme podklad, aby to bylo vidět a následně pokračujeme 3. částí.
6. Tréning C. - příprava závěrečných manipulací.
a) Dáme do paměti něco (je jedno co - číslo text, nebo i vůbec nic)
b) Spustíme nahrávání.
c) Stiskneme CTRL+End. (skočili jsme do poslední buňky.
d) Stiskneme 1x šipku dolů.
e) Stiskmene Ctrl+šipku doleva.
f) Stiskneme 1x šípku nahoru. (jsme ve sloupci "A" vedle "B" poslední zápis)
g) Stiskneme Ctrl+šipku nahoru. (jsme přesně v pracovním prostoru)
h) Stiskneme Ctrl+V (pracovní úsek je vyplněný daty = vzorec)
i) Stiskneme Ctrl+C - následně Enter (načtená data z pracovního úseku a kurzor v A3)
j) Nyní s volbou dialogem vložit "jinak" > "jen čísla a text".
k) Dáme kurzor do řádku 2 (kamkoliv) stiskneme Ctrl+ šipka nahoru.
l) Ve vybraném úseku (třeba B1:B2) - obecně prázdné pomocné řádky - dáme odstranit.
m) Jsme u konce, ale můžeme například vše ještě upravit - podle potřeby.
n) Před uložením makra doporučuji kurzor postavit někam, kde bude potřeba.
Poznámka :
Podobně můžeme třádit - při tom smazat duplicity (jen pomocí Vzorce "=IF(B[tento řídek]=B[-1];1;""), nebo cokoliv jiného. Nepotřebujete znát žádné složité vzorce - Stačí IF, AND, OR, SUM COUNTIF, nebo textové LEN, LEFT, MID, RIGHT. Efektivita práce s nahrávanými makry není s ničím srovnatelná. Rychlejší "někdy a ne o moc" mohou být psaná makra - ale to musí dělat programátor. Ten to bude dělat mnohem déle, nežli rutinovaný uživatel své nahrávané - nemluvě o tom, za kolik :-)
Klíčem k úspěchu je umění postavit a nahrát vzorce. Samozřejmě i manipulace je důležitá. Buhu žel tyhle věci nikde nelze najít a je toho ještě hodně. Kdysi jsem chtěl dělat manuál, ale dělám to takhle kousek po kousku.
Když by to mělo být profesionálně udělané, tak je lepší udělat to v array (1000 prvků znamená 997 sousedících trojic "pokud to nemá být cyklické konec-tačátek". Normální makra "bez array" nemají proti nahrávaným šanci v rychlosti.
Celkem je to asi 2000 porovnání - relace NovýPrvek =? StaršímuPrvku =? Nejstaršímu v trojici. Pokud tomu dobře rozumím, tak hledáte trojicí sousedících prvků se stejnou velikostí (nebo parametrem - třeba text se stejným písmenkem ap). Pak držíte v pamšti jen omezené množství maximálně 2 starší prvky, ale asi častěji jen jeden (když se novýPrvek <> dvěmaStarším, zůstane tam jediný pro další krok).
Množství už je asi na hranici možností jediného vzorce typu Vlokup.., nebo maticového tvaru.( nahrávaná makra lze kopírovat sekvenčně a pokryjí mnohem více postupně, nežli tyto allone. Prostě pokud jde jen o jeden sloupec, tak jednorozměrná array, pokud více, tak vácerozměrná (2D) a je jedno kolik toho je.
Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ