» Poradna » Programy

Excel - změna směru funkce (z prava do leva)

 |   |  Microsoft Windows 7 Firefox 10.0.6

Ahojte,mám v excelu následující kód (viz níže), funguje tak, že pokud je vlevo číslo větší než 1, přičte vždy 1 do doby, než narazí na číslo menší než 1, tzn. 1, 2, 1, 0 = 3, a pokud je vlevo první číslo menší než 1, tak odečítá do té doby, dokud nenarazí na číslo větší než 1, tzn. 0, 0, 0, 0, 1 = -4.Otázke je následující: jde tuto funkci předělat tak, aby počítala zprava do leva a né jak teď zleva do prava?Díky za odpověďOption ExplicitFunction IncrDecr(Blk As Range) As IntegerDim Cll As Range, Tmp As IntegerIncrDecr = 0For Each Cll In Blk.Cells'------------------If Blk(1).Value = 0 Then If Cll.Value = 0 Then IncrDecr = IncrDecr - 1 Else Exit FunctionEnd IfEnd IfIf Blk(1).Value > 0 Then If Cll.Value > 0 Then If Cll.Value = "-" Then Exit Function End If IncrDecr = IncrDecr + 1 Else Exit FunctionEnd IfEnd If'--------------------Next CllEnd Function

Odpovědi na otázku

 |   |  Microsoft Windows XP Firefox 15.0.1

Odpověď je následující: ANO

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 10.0.6

Děkuji za odpověď. Logicky tedy musí následovat druhá otázka: je mi schopný sem někdo hodit kód, který obrátí tuto funkci (tedy počítání zprava do leva)?Děkuji

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Firefox 15.0.1

Logická druhá odpověď zní: ANO (mně se v tom hrabat nechce)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 15.0.1

Tak drž hubu, příteli, když sa ti v tom nechce hrabat

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Firefox 15.0.1

Pročpak? On se ptal, jestli NĚKDO JE SCHOPNÝ. A já jsem přesvědčen, že ANO, někdo je určitě schopný.Hlavně, že ty odpovídáš na dotazy tazatele.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 22.0.1229.79

Je vidět, že běžná komunikace mezi smrtelníky ti dělá potíže.Nepřímá otázka je formou zdvořilého projevu.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP IE 7.0

Jen zhruba:Pro "obrácení" postupu je nutno nahradit cyklus "For Each Cll In Blk.Cells ..... next Cll" cyklemDim i as integerFor i = Blk.Cells.Count To 1 Step -1....( Cll.Value nahradit výrazem Blk(i) )....Next ia upravit ostatní indexy a hodnoty pro postupu "zprava"

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 10.0.6

Díky za odpověď. Bohužel podle tvého návodu to nejsem schopný dát dohromady, jelikož se ve VB vůbec nevyznám....

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows XP Firefox 15.0.1

Takže to vypadá, že budeš muset najít nějakého programátora VB najít a asi mu i něco zaplatit.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 22.0.1229.79

Já bych se snažil najít řešení bez makra.Popiš podrobněji strukturu těch dat. Počet sloupců je v tabulce stejný?Předpokládám, že v buňkách jsou pouze celá čísla. Můžou se vyskytnout záporná?První myšlenka je sloučit buňky do jednoho textového řetězce a na něm provést analýzu pomocí textových funkcí.Ale je potřeba znát ten obor hodnot.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 10.0.6

Bohužel to není tak jednoduché, záporné hodnoty se nevyskytují, ale může se v buňkách vyskytnout znaménko "-". Počet sloupců je stejný, dejme tomu vždy 20. Struktura dat může vypadat následovně:- - - - 0 1 2 0 0 - 4 - - - 2 = 20 - 1 1 1 3 - 1 0 0 0 1 2 0 0 - = -2- 0 1 - - - - 2 4 2 1 0 1 2 4 3 5 = 5- - - - - - - - - - 0 0 - 0 - 0 = -4v podstatě by se mělo počítat pouze s číslicemi, znaménko "-" se přeskakuje (do konečného výpočtu nezasahuje.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Chrome 22.0.1229.79

Zadání je toto:- pokud je vlevo číslo větší než 0, přičte vždy 1 do doby, než narazí na číslo menší než 1- a pokud je vlevo první číslo menší než 1, tak odečítá do té doby, dokud nenarazí na číslo větší než 0Buňky nabývají hodnot "0", "-" a kladných celých čísel.Je potřeba postup pro vyhodnocení zprava.Udělal jsem příklad pro těch tvých 15 hodnot.1. Přetransformoval jsem sloupce A-O do sloupců Q-AE, tak že hodnoty "0" a "-" zůstanou zachovány a všechny ostatní budou převedeny na "1"Q2: =KDYŽ(NEBO(A2=0; A2="-");A2;1)R2: =KDYŽ(NEBO(B2=0; B2="-");B2;1)2. Do sloupce AG jsem sloučil do řetězce hodnoty sloupců Q-AE v opačném pořadíAG2: =CONCATENATE(AE1;AD1;AC1;AB1;AA1;Z1;Y1;X1;W1;V1;U1;T1;S1;R1;Q1)3. Do sloupce AH jsem převedl hodnoty ze sloupce AG očištěné o znaky "-". Takže ve sloupci AH jsou hodnoty typu: 1100110, 0011000111110, ap.AH2: =DOSADIT(AG2;"-";"")4. Nyní je potřeba spočítat ve sloupci AG pro každou buňku počet úvodních jedniček nebo v záporné hodnotě počet úvodních nulAG2: =KDYŽ(ČÁST(AH2;1;1)="1";KDYŽ(JE.CHYBA(NAJÍT("0";AH2;1));DÉLKA(AH2);NAJÍT("0";AH2;1)-1);KDYŽ(JE.CHYBA(NAJÍT("1";AH2;1));-DÉLKA(AH2);-(NAJÍT("1";AH2;1)-1)))Je to trochu nepřehledné ale funguje to ve shodě s tvými příklady.Funkce KDYŽ() hledá příští výskyt nuly, pokud je na začátku jednička. Anebo výskyt příští jedničky, pokud je na začátku nula.Funkce JE.CHYBA ošetřuje případy samých nul nebo samých jedniček a dosadí počet rovný délce řetězce.Počet nul je opatřen zápornou hodnotou.Pokud bys ve funkci CONCATENATE() ve sloupci AG neotáčel pořadí, tak to počítá zleva, jinak to počítá zprava.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |  Microsoft Windows 7 Firefox 10.0.6

Tak to je super, funguje přesně jak má. Ani jsem netušil, že to půjde vyřeštit bez makra.Díky moc!

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

Související témata: Exit, První číslo




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

Sex a rozmnožování při mezihvězdné cestě: Kolik lidí je potřeba pro let k Proximě Centauri?

Sex a rozmnožování při mezihvězdné cestě: Kolik lidí je potřeba pro let k Proximě Centauri?

** Vědci spočítali, jak velká by musela být posádka pro vícegenerační let k nejbližší hvězdné soustavě ** Proxima Centauri se nachází 4,3 světelných let od nás ** Za současných technologií bychom k ní letěli 6300 let

Petr Kubala | 56

Takhle zemřete, když asteroid dopadne na vaše město

Takhle zemřete, když asteroid dopadne na vaše město

** Jak by to dopadlo, kdyby na světovou metropoli či do nedalekého moře dopadl velký asteroid? ** Simulovali to odborníci z University of Southampton ** Výsledky jsou velmi zajímavé

Petr Kubala | 32

Budoucnost elektroniky: čeští vědci stojí za revolučním čipem, který nemá ve světě obdoby

Budoucnost elektroniky: čeští vědci stojí za revolučním čipem, který nemá ve světě obdoby

** Čeští vědci pod vedením Tomáše Jungwirtha vyvíjí nový typ revolučního paměťového čipu ** Zatímco v současnosti elektronika pracuje s elektrony, v budoucnu to budou spiny elektronů ** Čipy budou moci být klidně i 1 000x rychlejší a úspornější

Karel Javůrek | 32

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

Rekordy počasí: V Česku to ještě jde, skutečné extrémy zažívají jinde

Rekordy počasí: V Česku to ještě jde, skutečné extrémy zažívají jinde

** Teplotní extrémy dokážou překvapit. Seznamte se s rekordy v Česku i ve světě ** Rekordní hodnoty jsou mnohdy až k neuvěření ** Zjistěte, kdy ke bylo největší horko, zima, déšť či vítr

Karel Kilián | 7


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