Prípadne vyskúšajte INDEX MATCH konštrukciu.
Ešte ma napadlo otočiť výpočet opačne:
=3227-(3227*10/100)
a vyjde z toho 0. To číslo 10 je tam iba pre pochopenie. Tú si zamente naspäť za 100, ako ste tam mal. To len aby ste vedeli o ktorom čísle hovorím. Tak to číslo 10 je to číslo 100 z predošlého Vášho vzorca. Ako to mám vysvetliť... Tie čísla vymente, prvá 100 je druhá, a druhá je prvá. Bez tej jednej zátvorky.
Už viem ako to vysvetliť:
Nový
=3227-(3227*bbb/aaa)
Starý
=(3227-((3227/aaa)*bbb))+0
Na pripočítaní tej 0 na konci vôbec nezáleží - nemá to vplyv.
Keď ukončíte Outlook, tak sa Vás opýta, že či chcete ukončiť a odoslať neskôr, lebo sa ešte odosiela. No a Vy dáte, že chcete Ukončiť a odoslať neskôr. Pri ďalšom štarte chodte hneď do Pošta na odoslanie, označte neodoslanú správu, a dajte hore tlačítko Odstrániť. Správa by sa mala zrušiť a máte ju v Odstránené položky.
Teda takto je to presne u mňa na Outlook 2013 Pro.
Inak posielať 160 MB cez e-mail, keď mailové servery podporujú ledva pár jednotiek MB ???
V Exceli nieje možné urobiť zoznam listov pomocou vzorcov. Ak nechcete alebo nemôžete použiť makrá, máte iba jedinú možnosť. Ručne si udržiavať menný zoznam listov. Ak chcete a/alebo môžete používať makro, tak Vám napíšem kód, ktorý Vám ten zoznam urobí. Napr. vytvorte si nový list, ktorý si nazvite napr. ZoznamListov.
1.a ) Do tohoto listu napíšte od bunky A1 dole zoznam všetkých listov na ktoré sa budete chcieť prepínať.
1.b ) Zoznam práve používaných listov Vám tam vloží makro.
2.a) Do listu, kde chcete mať to prepínanie si rozvrhnite, kde chcete mať výberový zoznam, a kde hyperlinkový odkaz. Označte bunku kde bude výberový zoznam, a na karte Údaje, kliknite na Overenie údajov, tam vyberte v poli Povoliť položku Zoznam. Do poľa Zdroj zadajte tento vzorec, ktorý Vám vypočíta zaplnenú oblasť s menami v liste ZoznamListov
=OFFSET(ZoznamListov!A1;;;COUNTA(ZoznamListov!A:A);)
COUNTA spočíta zaplnené bunky v stĺpci A, a OFFSET zväčší oblasť od A1 o tento počet.
2.b) Do toho listu, v ktorom budete prepínať, vložte do bunky, na ktorú budete klikať tento vzorec :
=HYPERLINK(MID(CELL("filename");SEARCH("[";CELL("filename")); SEARCH("]";CELL("filename"))-SEARCH("[";CELL("filename"))+1)&"'"&$C$1&"'!$A$1";"Prejdi na")
pričom "Prejdi na" si nahraďte za čo chcete, a $C$1 nahraďte za adresu bunky so zoznamom (z kroku 2.b)
3. Toto si nevšímajte, to zisťuje názov zošitu, potrebný pre fungovanie hyperlinku
MID(CELL("filename");SEARCH("[";CELL("filename")); SEARCH("]";CELL("filename"))-SEARCH("[";CELL("filename"))+1)
Neviem, aký iný návod chcete.
EDIT:
Upravil som prílohu, teraz tam máte ešte okrem Hypertextového odkazu v riadkoch (A1:A30), aj hypertextový odkaz B1, ktorý sa počíta pomocou výberového zoznamu C1. Teraz ten výberový zoznam berie mená z A1:A30, ale to si môžete kľudne schovať na nejaký list, a budú použité len 2 bunky B1 a C1 (alebo adekvátne)
Nechcete náhodou vypočítať číslo znížené o percentuálny úbytok ? Ak áno, tak zmente vzorec na toto.
Máte tam 2 varianty (% číslom a % vo formáte %), a ak je to tak ako si myslím, tak aj keď zadáte úbytok 100, dostanete 0, čo v predošlom prípade nedostanete. Úplne vpravo máte kontrolu nuly.
Ešte raz som si to prečítal (no dobre tak ešte 3x), a myslím, že som to pred tým pochopil zle. Pôvodne som si myslel, že ak je nejaký dátum v celej skupine <= prvému dátumu skupiny ( podľa čísla v A), tak do tohto "titulného" riadku skupiny dať OK, alebo opačne NOK. Ale teraz som to pochopil tak, že OK/NOK treba dať asi do každého riadka v skupine okrem titulného.
Nech sa páči riešenie (maticový vzorec, čiže Ctrl+Shit+Enter):
=IF(OR($A1<>"";$B1="");"";IF($B1<=INDEX($B$1:$B1;LARGE(IF($A$1:$A1<>"";ROW($A$1:$A1);0);1));"OK";"NOK"))
stačí iba nakopírovať na potrebný počet riadkov. V predošlom prípade bolo potrebné ešte vypočítať poslednú bunku, v tomto prípade nie.
Vyskúšajte toto. Každý list má svoj variant oblastí Sucet01...
@marjankaj
??? Teraz ide o čo ? O tú moju vetu, že je blbé, lebo treba myslieť na 2 veci ? Áno je to blbé, a uviedol som alternatívu na získanie relatívnej adresy, ktorá mi na pochopenie pripadá ľahšia (Address). To neznamená, že sa má prepracovávať výkonné jadro Excelu. Samozrejme, že si Excel interne neprekladá písmenká stĺpcov na čísla, ale pracuje rovno s číslami R1C1. To by boli vysoké "režijné náklady".
Ak má byť na to UDF, nieje problém, ale ak tých vzorcov bude veľa, tak to UDF neúmerne zaťaží, a preto to chce zadávateľ urobiť tak, že sa validné vzorce pripravia, a vložia naraz v jednej procedúre. To sú síce cca rovnaké režijné náklady ako UDF, ale následne sú už vzorce natívne počítané, a to je výhoda oproti UDF (pri veľkom množstve).
Nemienim sa tu baviť o MS. Na to sú iné Flame diskusie. Ja som to spomenul iba všeobecne, ako reakciu na Vás. To je celé. Ale ak chcete príklad, nech sa páči. Nechcete mi snáď povedať, že nemožnosť vytvoriť zoznam listov pomocou vzorca (napr. pomocou indexu), je ojedinelý problém... Ale Excel je výborný program, o tom žiadna diskusia. To nemôže nikto napadnúť. Väčšina problémov tak či onak, je spôsobená iba nedostatočnými vedomosťami.
Ak niečo nejako je alebo nieje, nikto s tým nič neurobíme, iba to môžeme akceptovať.
Teraz si počkáme na zac1234, či sa to bude dať teda takto riešiť.
Sub ZapisVzorec()
Dim sB As Integer, rB As Long, sV As Integer, rV As Long
sB = 5 'stĺpec bunky kam chceme zapísať nový vzorec - E5
rB = 5 'riadok bunky kam chceme zapísať nový vzorec - E5
sV = 2 'stĺpec bunky, ktorá je počítaná v novom vzorci - B2
rV = 2 'riadok bunky, ktorá je počítaná v novom vzorci - B2
Cells(rB, sB).FormulaR1C1 = "=R" & rV & "C[" & sV - sB & "]+R[" & rV - rB & "]C" & sV & "*R" & rV & "C" & sV
End Sub
V skratke, ak chcete $ (absolútne) nedávate [ ], ak chcete bez dolára (relatívne) musíte zadať [ ], a v nich je treba číslo ktoré počíta posun hodnoty riadku/stĺpca čo má vo vzorci byť, od hodnoty riadku/stĺpca tej bunky, do ktorej sa vzorec vkladá.
OT: Áno, Microsoft na zákazníkov nedbá, a ich želania (ak vôbec) prehodnocuje až po rokoch.
Skúsil som maticu, vyskúšajte. (Dátumy som pomenil)
??? Absolútne nemám potuchy, čo chcete. Akože vybrať názov oblasti zo zoznamu ? Akej oblasti, tej ktorá sa bude kopírovať ? Čiže sa bude od teraz kopírovať iba jedna oblasť (tabuľka) ? Alebo chcete do databázy zapísať iba súčet zaplnených buniek v jednej jedinej oblasti určenej tým zoznamom oblastí, ktoré sa pred tým kopírovali cez tlačítko ? A ako bude makro vedieť z ktorého listu chcete túto oblasť adresovať, keď vravíte že listov bude viac ? Asi bude výber oblasti v každom liste.
Narýchlo som pozrel na to makro, a poviem Vám to na rovinu, vôbec sa mi nechce to makro celé naštudovať, vymyslieť riešenie toho čo požadujete, a hlavne zisťovať to čo vlastne chcete. A napíšte pre lepšie pochopenie aj presne čo chcete mať v tom zozname, nie xxx,yyy, to nič nikomu nenapovie.
Takže lepšie, presnejšie napíšte čo chcete. Krištáľová guľa sa mi rozbila, a tak som pri týchto slovných logicko-vešteckých úlohách fakt natvrdlý.
Definované názvy, by sa dali jednoducho priradiť iba k určitým listom, čiže by mal každý list svoje, alebo by ich možno šlo nahradiť poľom.
Do pondelku nemám absolútne čas, od utorka ešte neviem. Ja osobne Vám to teda určite nesľúbim.
To Address máte dobre vysvetlené na MSDN:
https://msdn.microsoft.com/en-us/library/office/ff837625.aspx
To R1C1 (konkrétne relatívny odkaz pomocou []) mi príde úplne blbý, pretože treba myslieť nielen na premenné vo vzorcoch, ale navyše aj na konkrétne súradnice bunky, pretože do [] sa zapisuje rozdiel (posun chcenej bunky oproti aktuálne nastavovanej).
Tak to skúste okľukou :
Cells(hoa, hoa).Formula = "=" & Cells(hoa, hob).Address(0, 0)
Áno, napadlo ma to po odoslaní, že by to malo byť nakoniec asi takto. Všetko funguje, eLCHa je hlava, darmo ...
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.