Stránka 1 z 1
Uložení pouze hodnot nikoliv vzorců v Excelu
Napsal: 01 čer 2007 14:54
od cerjar
Potřeboval bych excelový list /popř. všechny listy/ uložit pouze jako hodnoty. Tzn. že v buňkách, kde jsou nějaké vzorce, aby se uložily pouze vypočtené hodnoty. Nejlepší by na to bylo asi nějaké makro, které uloží vše jako nový excelový sešit pouze s hodnotami.
Díky všem
Napsal: 01 čer 2007 15:17
od alias75
Smaž si to druhé dubl téma.
Napsal: 01 čer 2007 21:28
od mmmartin
Na makro si netroufám, ale manuálně to není problém: zdrojový list načteš do schránky - např kombinací ctrl+a ctrl+c - přejdeš na buňku A1 listu, na který chceš vložit hodnoty a pak v menu vybereš Úpravy/Vložit jinak, v nabídnutém dialogu vybereš Hodnoty a dáš OK. Takto zkopírované hodnoty se ale neaktualizují při změně zdrojových dat.
Napsal: 04 čer 2007 13:44
od cerjar
mmmartin píše:Na makro si netroufám, ale manuálně to není problém: zdrojový list načteš do schránky - např kombinací ctrl+a ctrl+c - přejdeš na buňku A1 listu, na který chceš vložit hodnoty a pak v menu vybereš Úpravy/Vložit jinak, v nabídnutém dialogu vybereš Hodnoty a dáš OK. Takto zkopírované hodnoty se ale neaktualizují při změně zdrojových dat.
Tady o te moznosti vim, ale potreboval bych trochu elegnatnejsi reseni... v excelovem sesitu je asi 50 listu a rad bych to prevadel hromadne....
Napsal: 04 čer 2007 14:32
od Jan Pašek
A co použít záznam makra s funkcí relativně Uděláš si makro pro jeden list s přepnutím na list následující Pak již jen mačkáš přidělenou klávesovou zkratku. Mám ale pocit ze to nebude fungovat ve dvou souborech.
Napsal: 06 čer 2007 11:06
od Rich
Zkus tohle
Sub Preved_nahodnoty()
Dim Lst As Worksheet
Dim Bunka As Object
Application.ScreenUpdating = False
For Each Lst In ActiveWorkbook.Worksheets
Range("A1:F100").Select ' zde si dopln jak potrebujes
For Each Bunka In Selection
Bunka = Bunka.Value
Next Bunka
Next Lst
End Sub
Napsal: 09 čer 2007 10:45
od mikel
Rich: V tom tvém případě si převede všechny vzorce na hodnoty přímo v sešitě a tím pádem už se ke vzorcům zpětně nedostane.
Já bych to radši řešil kopií do jiného sešitu, ať se může ještě vrátit k původnímu sešitu a vzorcům.
Kód: Vybrat vše
Sub prevod()
Set Zdroj = ActiveWorkbook
Set Cil = Workbooks.Add
For Each List In Zdroj.Worksheets
List.Copy After:=Cil.Sheets(Worksheets.Count)
ActiveSheet.Cells.Copy
ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues
ActiveSheet.Range("A1").Select
Application.CutCopyMode = False
Next List
End Sub
Napsal: 10 čer 2007 07:45
od Rich
mikel píše:Rich: V tom tvém případě si převede všechny vzorce na hodnoty přímo v sešitě a tím pádem už se ke vzorcům zpětně nedostane.
Já bych to radši řešil kopií do jiného sešitu, ať se může ještě vrátit k původnímu sešitu a vzorcům.
Kód: Vybrat vše
Sub prevod()
Set Zdroj = ActiveWorkbook
Set Cil = Workbooks.Add
For Each List In Zdroj.Worksheets
List.Copy After:=Cil.Sheets(Worksheets.Count)
ActiveSheet.Cells.Copy
ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues
ActiveSheet.Range("A1").Select
Application.CutCopyMode = False
Next List
End Sub
Pokud jsou v sešitu sloučené buňky, následující příkazy hlásí chybu.
ActiveSheet.Cells.Copy
ActiveSheet.Range("A1").PasteSpecial Paste:=xlPasteValues
Napsal: 10 čer 2007 10:13
od mikel
To je pravda. V tvém případě jsi zapomněl na jednu podstatnou věc:
...
For Each Lst In ActiveWorkbook.Worksheets
Lst.Activate
Range("A1:F100").Select ' zde si dopln jak potrebujes
...
určitě víš, jaký bude výsledek, když zůstane stále na prvním listě. A dynamickou oblast taky nepodchytíš, pokud pro jistotu neurčíš oblast A1:IV65536.
Ale o to nejde. Jde o to, že na dálku a bez konkrétních informací můžeš udělat pouze nějaké makro, ale bez konkrétního příkladu ho nikdy neodladíš. Takže pokud by výsledek nebyl takový, jak cerjar očekává, ozval by se.
Napsal: 10 čer 2007 16:17
od Rich
určitě víš, jaký bude výsledek, když zůstane stále na prvním listě. A dynamickou oblast taky nepodchytíš, pokud pro jistotu neurčíš oblast A1:IV65536.
To by trvalo děsně dlouho