Trošku jsem si hrál ;))
Pokud je zadání myšleno:+----------+----------+----------+
| od| do| x|
+----------+----------+----------+
| 1| 5| 100|
| 6| 10| 200|
| 11| 20| 300|
| 21| 40| 400|
| 41| 80| 500|
| 81| 160| 600|
| 161| 320| 700|
| 321| 640| 800|
| 641| 1280| 900|
| 1281| 2560| 1000|
| 2561| 5120| 1100|
| 5121| 10240| 1200|
| 10241| 20480| 1300|
| 20481| 40960| 1400|
| 40961| 81920| 1500|
| 81921| 163840| 1600|
| 163841| 327680| 1700|
| 327681| 655360| 1800|
| 655361| 1310720| 1900|
| 1310721| 2621440| 2000|
+----------+----------+----------+pak=KDYŽ(A1<6;1;(USEKNOUT(LOGZ((A1-1)/5;2))+2))*100
Pokud ne, tak nějak podobně jako pepe a já jsem nezlobil ;)
Aha ;)Sub subMarine()
With Workbooks.Open("C:\data.xls")
.Sheets("List1").Range("A1").Formula = "=1+1"
.Save
.Close
End With 'Workbooks.Open("C:\data.xls")
End Sub
@elninoslov
Pokud jde o řešení databáze, lze snad pouvažovat i o jiném formátu - zaprvé xls už bych zavrhl úplně a jen teoreticky mně napadá csv či xml
A technická poznámka
na vložení odkazu zkuste použít tag url místo code ;))
@elninoslov
Toto je staré téma a moc se mi nechce se do toho dostávat. Asi ano, vždycky záleží na okolnostech. I já se vyvíjím a po dvou letech už bych spoustu věcí určitě udělal jinak ;)
Nikdy jsem to nezkoušel, ale řekl bych že to možné je - samozřejmě mám na mysli pomocí VBA.
Nicméně zaprvé mi daleko jednodušší připadá skryté otevření, zápis a zavření a zadruhé nevidím využitelnost (k čemu to má být dobré).
V prvé řadě převeďte obě oblasti na tabulku - můžete pak v klidu použít maticový vzorec a nestarat se o jeho kopírování.
Pak je asi sto možností a každý Vám to tu dá jinak. Moje řešení je v příloze
mno možná, ale řešení je stejné ;)
Nečetl jsem to celé, ale není to to samé?
http://wall.cz/index.php?m=topic&id=23961#post-24810
Maticově:=ČÁST(A2;MAX(IFERROR(NAJÍT(ŘÁDEK($A$1990:$A$2100);A2);0));4)/1=MID(A2,MAX(IFERROR(FIND(ROW($A$1990:$A$2100),A2),0)),4)/1
@marjankaj
U řešení od palooo to není potřeba. Podívejte se na to pořádně, popřípaě vyzkoušejte. Jen bych na jeho místě raději použil ClearContents.
Já chtěl vykoušet "jednořádkové řešení" a to se povedlo.
máte pravdu, nezacyklí - teď to vidím
ale nemáte pravdu - event se spustí ;))
Řekl bych, že se Vám to zacyklí ;)
Kdyby to nechtělo tu omáčku kolem, tak stačí 1 řádek ;)Private Sub Worksheet_Change(ByVal Target As Range)
Const sADDRESS As String = "$H$12:$K$12"
With Range(sADDRESS)
If Union(.Cells, Target.Cells(1)).Address = .Address Then
Dim bEvents As Boolean
bEvents = Application.EnableEvents
Application.EnableEvents = False
.Value = Evaluate("=IF(COLUMN(" & .Address & ")=" & Target.Cells(1).Column & "," & Target.Cells(1).Value & ","""")")
Application.EnableEvents = bEvents
End If
End With 'Range(sADDRESS)
End Sub
Mno o nemožnosti použití zámku jste mně nepřesvědčil a ani já Vás nebudu přesvědčovat o opaku.
Zakázání uložení - dejte tam hlášku. Budou informováni. Navíc ve 2013 můžete využít událost, tzn uložit a pak zobrazit, že od této chvíle nelze uložit. Takže o nic nepřijdou.
Ve 2013 ještě můžete využít Vaší událost k tomu, že před odstraněním se list zkopíruje, přejmenuje na původní název. Pak dojde k odtranění originálu, ale kopie tam zůstane. Pokud to uděláte dobře, budete mít stejný sešit. Jediný rozdíl bude v kódovém jméně listu.
Váš kód jsem nestudoval, ale hrát si s ukládáním je na dlouhé lokte.
Toto je ode mne k tomuto tématu vše.
@marjankaj
máte 2010 a tu událost tam máte?
Mno - pokud bych to měl řešit jinak než zámkem (což bych asi nedělal), řešil bych to takto - přejmenování problém není a vymazání obsahu už vůbec ne.
Souhlasím s marjankajem a psal jsem to už výše, ale teď mně napadla jednoduchá možnost. Zjistit, zda byl odtraněn list není problém, takže nezakazovat odstranění listu, ale místo toho zakázat uložení sešitu, pokud byl list odstraněn. To je řešitelné a celkem snadno, ale ne v pátek ve 14:00 ;)
Mno ono to možná funguje, ale tato událost je do VBA přidána kdy? ve verzi 2013? Ve starších Vám to fungovat nebude a nehodí ani chybu, tzn musíte mít jistotu, že všichni používají 2013. Taky tam mohl MS přidat Cancel :( .
Tipl bych že to padání způsobuje běžící kód v zavíraném sešitě, ale je to jen tip.
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.