» Poradna » Programy

Makro v Excelu

 |   | 

Dobry den, chtel bych se zeptat, jestli jde udelat makro na hledani reseni, aby se dalo pouzit pro kazdy radek ve sloupci. Existuje funkce v excelu, ktera by toto resila? Dekuji za rady. Michal

Odpovědi na otázku

 |   | 

Chtelo by to polozit dotaz trochu jinak - najit funkci reseni pro makro pro reseni radku - takto si tvuj dotaz lze tez vylozit, mi nic nerika. 

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

zkusim to trochu jinak. Naprogramoval jsem makro na hledani reseni v excelu. Kdyz to udelam, tak muzu pouzit makro pro hledani reseni jen v puvodni bunce. Slo by udelat, aby to makro slo pouzit i pro dalsi hodnoty ve sloupci, bez toho abych musel tvorit makro pro vsechny bunky ve sloupci zvlast. Uplne idealni by byla moznost hledani reseni prevest do funkce a tak ji pak pouzivat.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

Jeste je to tajnosnubne. Co to makro resi? Pak se mozna najde funkce, ktera by byla kopirovatelna na vsechny radky sloupce.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

např. v A1 je hodota a v B1 je funkce zalozena na teto hodnote. Ja potrebuju najit takovou hodnotu A1, pro kterou by byla funkce rovna 0. Pomoci hledani reseni excel dosazuje postupne takove hodnoty az funkce bude 0 (nebo blizka nule). To mi zadna dostupna funkce v excelu asi neudela, aby vlastne menila i jinou bunku.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

Ne, to skutečně nejde. Ale můžeš si napsat Sub, která zpracuje zadanou oblast.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

Požadavek není moc jasný, ale nebylo by lepší přepracovat funkci (rovnici) tak, aby výsledek byl ta požadovaná 0.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

myslel jsem toto:
http://zive.sk/poradna/SubChild.asp %8AEN%CD%2A%22

zkousel jsem funkci, ale pro presnost vypoctu alespon na 12. desetinne misto musim mit tak 20 000 radku excelu . Je to nedokonala funkce, pro predstavu:

- pomoci nasledujicich radku se analyzuje jaka hodnota je ve funkci a podle ni se snizuje hodnota v dalsim radku a z ni se snizi i hodnota funkce

excelova rovnice je v bunce F9:

=KDYŽ(A(G8>1);(F8-0,1*$C8);(KDYŽ(A(G8>0,1;G8<1);(F8-0, 01*$C8);(KDYŽ(A(G8>0,01;G8<0,1);(F8-0,001*$C8);(KDYŽ(A(G8>0,0 01;G8<0,01);(F8-0,0001*$C8);(KDYŽ(A(G8>0,0001;G8<0,001);(F8-0 ,00001*$C8);(KDYŽ(A(G8>0,00001;G8<0,0001);(F8-0,000001*$C8);( KDYŽ(A(G8>0,000001;G8<0,00001);(F8-0,0000001*$C8);(F8)))))))) ))))))

G8 je mat. funkce, ktera se ma rovnat nule (o radek vys nez je tato rovnice - vyvarovani cyklicke funkce)
F8 je hodnota funkce G8
C8 je hodnota diference - o kolik se ma predchozi hodnota snizit (timto zpusobem ji lze menit a upravit tak vypocet)

bohuzel excel dovoluje jenom 7 vnorenych funkci, tzn. ze musi byt 4 sloupce se stale se snizujici hodnotou (dalsi sloupec zacina 0,0000001). Problem je taky v tom, ze moje mat. funkce osciluje, takze prechazi i do zapornych hodnot (( takze je nutne pote jeste upravit funci pro zaporne hodnoty.

Snad jsem to vysvetlil alespon trochu srozumitelne


Souhlasím  |  Nesouhlasím  |  Odpovědět
 | 

Nešlo by použít vlastní funkci? Zpracovávat může např. sloupec, ve kterém je umístěna, popř. sloupec zadáš jako parametr.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

rad bych ale ve VB neumim pracovat . Vypocet 16 korenu te funkce (kdy se rovna 0) ma velikost 130MB excelovskyho dokumentu

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | 

Pořád mi to není jasné. Pokud máš nějakou funkci (vzorec), který potřebuješ aplikovat na všechny buňky ve sloupci, tak takové makro není problém. Např. takto

Dim i As Integer
i = 0
While ActiveCell.Offset(i, 0) <> ""
ActiveCell.Offset(i, 0).GoalSeek Goal:=0, ChangingCell:=ActiveCell.Offset(i, 1)
i = i + 1
Wend

Kde se bude zpracovávat sloupec od aktivní buňky dolů (sloupec se vzorcem - až do výskytu prázdné buňky) a ChangingCell ve vždy vpravo od zpracovávané buňky. Ale spíš asi nechápu problém. Hlavně mě děsí výrazy jako "16 korenu funkce" a "130MB excelovskyho dokumentu". Rád bych ti pomohl (zdá se, že řešení hledáš už dlouho), ale pořád ti nerozumím.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

Díky, jde to. Chtěl jsem se ještě zeptat, excel umožňuje max. 7 postupně vnořovaných funkcí. Lze to obejít použitím vlastní funkce? Pokud ano, jak by vypadala tato funkce naprogramovaná v VB:

=KDYŽ(A(G8>1);(F8-0,1*$C8);(KDYŽ(A(G8>0,1;G8<1);(F8-0, 01*$C8);(KDYŽ(A(G8>0,01;G8<0,1);(F8-0,001*$C8);(KDYŽ(A(G8>0,0 01;G8<0,01);(F8-0,0001*$C8);(KDYŽ(A(G8>0,0001;G8<0,001);(F8-0 ,00001*$C8);(KDYŽ(A(G8>0,00001;G8<0,0001);(F8-0,000001*$C8);( KDYŽ(A(G8>0,000001;G8<0,00001);(F8-0,0000001*$C8);(F8)))))))) ))))))

Omlouvám se, ale moje programátorské zkušenosti skončili na vytvoření té funkce v excelu Díky za pomoc.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | 

To je to nejmenší. Jestli jsem tvůj vzorec správně pochopil, tak vlastní funkce ve VBA by vypadala takto:

Function moje(C, F, G As Double)

If G > 1 Then
moje = F - 0.1 * C
ElseIf G > 0.1 And G < 1 Then moje = F - 0.01 * C
ElseIf G > 0.01 And G < 0.1 Then moje = F - 0.001 * C
ElseIf G > 0.001 And G < 0.01 Then moje = F - 0.0001 * C
ElseIf G > 0.0001 And G < 0.001 Then moje = F - 0.00001 * C
ElseIf G > 0.00001 And G < 0.0001 Then moje = F - 0.000001 * C
ElseIf G > 0.000001 And G < 0.00001 Then moje = F - 0.0000001 * C
Else: moje = F
End If

End Function

kde původní buňky zadáváš jako parametry. (To, co bylo v C8, je parametr C, Co bylo v F8 se teď jmenuje F a G8->G). Jako parametr samozř. můžeš použít adresu buňky.
Jak se vytváří vlastní funkce se probíralo tady:
http://www.zive.cz/poradna/SubChild.asp

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

mooc díky, pomohlo to, jen bych se chtěl zeptat, jak se zapisuji v VB záporné hodnoty, např. G > -O.1?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | 

Záporní čísla se píší normálně, jen místo písmena O používáme nulu 0 
např. 
...
ElseIf G > -0.1 And G < 1 Then moje = F - 0.01 * C
...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

pardóóóón . Děkuju.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

mám ještě jeden dotaz. Jak udělat makro, aby po spuštění provádělo 1 nahranou akci pořád dokola směrem dolů ve sloupci, např. vložilo do buňky místo čísla funkci a přešlo na další buňku s číslem (jsou pod sebou) a zase udělalo totéž?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 | 

Stejně, jen místo GoalSeek napíšeš obsah nahraného makra. Tedy:

Dim i As Integer
i = 0
While ActiveCell.Offset(i, 0) <> ""

//sem zapíšeš příkazy zkopírované z makra.
//Buňky, které se mají zpracovat (obvykle ActiveCell.něco)
//nahradíš výrazem ActiveCell.Offset(i, 0).něco

i = i + 1
Wend

Funkce opět začne na označené buňce a skončí při výskytu prázdné buňky.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

dík, moc si mi pomohl, je to přesně ono.

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Makro




Určitě si přečtěte

Porno insider: Jak virtuální realita vstupuje do filmů pro dospělé

Porno insider: Jak virtuální realita vstupuje do filmů pro dospělé

** Pornografie údajně představuje třetinu internetové obsahu a je technologický tahounem ** Do erotického obsahu postupně zasahuje i virtuální realita ** Kromě vizuálního vjemu se pracuje také na virtuálním uspokojení toho hmatového

Jan Dudek | 28

Nechcete platit za Total Commander? Těmito bezplatnými programy ho můžete nahradit

Nechcete platit za Total Commander? Těmito bezplatnými programy ho můžete nahradit

** Total Commander je na Windows takřka legendou ** Licence však stojí více než tisíc korun ** Našli jsme pro vás deset alternativ dostupných zdarma

Karel Kilián | 141

Šmírovačka kamerami Googlu: Koukněte se, co nového zachytily na Street View

Šmírovačka kamerami Googlu: Koukněte se, co nového zachytily na Street View

Google stále fotí celý svět do své služby Street View. A novodobou zábavou je hledat v mapách Googlu vtipné záběry. Podívejte se na výběr nejlepších!

redakce | 44

Portál občana už funguje. Na státní web vypadá až překvapivě použitelně

Portál občana už funguje. Na státní web vypadá až překvapivě použitelně

** Portál občana už funguje, vyřídíte na něm první požadavky ** Funkce se budou postupně rozšiřovat ** Web je docela moderní a přehledný

David Polesný | 65

15 věcí, které umí Windows 10, ale možná o nich vůbec nevíte

15 věcí, které umí Windows 10, ale možná o nich vůbec nevíte

** Systém Windows 10 umí spoustu užitečných drobností ** O mnoha praktických funkcích pravděpodobně ani nevíte ** Poznejte užitečné tipy, které se vám mohou hodit každý den

Vladislav Kluska | 36


Aktuální číslo časopisu Computer

Velký test 18 bezdrátových sluchátek

Vše o přechodu na DVB-T2

Procesory AMD opět porážejí Intel

7 NVMe M.2 SSD v přímém souboji