< návrat zpět

MS Excel


Téma: zamknout vzorce pro transponovani rss

Zaslal/a 16.10.2015 11:32

Ahoj, prosim neni nejaky figl, jak muzu zamknout vsechny vzorce v tabulce, abych ji pak mohla transponovat a vzorce ukazavali tam kam maji?

proste do vsech vzorcu hodit k adresam radku a sloupcu $

a jeste jinak - vsechny vzorce zmenit z typu = A1 na =$A$1, ale proste vsechny najednou a cely zvorec, kde je samozrejme vic odkazu kamsi jinak...

PRedem moc diky

Leona

Zaslat odpověď >

Strana:  « předchozí  1 2
#027486
avatar
Asi by si mala povedať, čo si ty myslíš pod TRANSPONOVAT.

Ja som si myslel(a zrejme aj excel si to myslí), že ide o vymenenie stĺpcov za riadky.citovat
#027493
avatar
no, to si myslim take. proc myslis, ze si to myslim jinak?citovat
#027495
elninoslov
No skúsim to ešte raz. Odmyslite si tú medzikrokovú tabuľku, vôbec na ňu nemyslite, nemáte ju, nikdy ste ju nevideli. Viete ako by mal vyzerať výsledok v tej (nechcem povedať transponovanej) "poslednej" tabuľke. Viete aké výpočty nad dátami zo zdrojových tabuliek máte urobiť. Tak si tie výpočty urobte priamo vo vzorcoch, koncipované tak, že budú zohľadňovať rozdielnosť orientácie zdroj-cieľ. V prvom rade by sme potrebovali vidieť tie vzorce, aby sme usúdili, či sa to tak bude dať. Ak áno, môžete rovnako ako predtým urobiť jeden, a pretiahnuť ho.

Ak chcete makro, tak si to kludne urobte na tlačítko, ktoré Vám to preklopí, ale opäť treba myslieť na to, aký druh vzorcov tam je (a to tajíte), pretože na normálny vzorec použijete "bunka.Formula" ale na maticový "bunka.FormulaArray".

Niečo takéto, a to zavoláte tlačítkom:
Sub Rel2Abs()
Dim rng As Range, bunka As Range
On Error Resume Next
Set rng = Application.InputBox("Zadajte oblasť :", "Zmeniť relatívne odkazy na absolútne", Default:=Worksheets("List1").Range("B12:O17").Address(0, 0), Type:=8)
On Error GoTo 0
If rng Is Nothing Then Exit Sub
For Each bunka In rng
If bunka.HasArray Then
If Len(bunka.FormulaArray) < 255 Then
bunka.FormulaArray = Application.ConvertFormula(Formula:=bunka.FormulaArray, FromReferenceStyle:=xlA1, ToReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)
End If
Else
If Len(bunka.Formula) < 255 Then
bunka.Formula = Application.ConvertFormula(Formula:=bunka.Formula, FromReferenceStyle:=xlA1, ToReferenceStyle:=xlA1, ToAbsolute:=xlAbsolute)
End If
End If
Next bunka
End Sub
citovat
#027539
avatar
Diky elninoslov za odpoved a hlavne za makro - urcite radne pozkoumam.
Vzorce netajim, jen proste puvodni dotaz o tom vubec nebyl - slo o to najit neco, jak si zjednodusit pripad, kdyz pomerne jednoduse protahnu vzorce v tabulce, ale vysledek potrebuju preklopeny (btw - co je spatne na oznaceni "transponovany"? pouzivam spatnou terminologii, nebo nechapu smysl?).
Jasne, ze kdyz vim dopredu, ze to budu potrebovat preklopene,tak se daji ty vzorce napsat jinak, ale obcas je to zbytene komplikovane - ale hlavne to potrebuju pouzit, kdyz mi nakonec sef prekope zadani uz hotoveho reportu a nechce se mi ty vzorce psat vsechny znova...
Ty vzorce obsahuji funkce jako KDYZ, ZISKATKONTDATA, JE.CHYBDHODN a odkazuji se na hlavicky radku i sloupcu tabulky i dokonce nekam uplne jinam...
Maticove vzprce nepouzivam (Teda apson o tom nevim:)), coz je asi chyba - zkusim se na ne trochu mrknout...citovat
#027540
avatar
A proč rovnou nepřehodit vzorce?

Sub TransVzorce()
Dim rng As Range, rng2 As Range
Dim Vzorce() As Variant

On Error Resume Next
Set rng = Application.InputBox("Zadajte oblasť :", "Odkud", Type:=8)
Set rng2 = Application.InputBox("Zadajte oblasť :", "Kam", Type:=8)
On Error GoTo 0
If rng Is Nothing Then Exit Sub
Vzorce = rng.Formula
rng2.Resize(rng.Columns.Count, rng.Rows.Count).Formula = Application.Transpose(Vzorce)
End Sub


Ovšem stejně jako u varianty s mezikrokem by to chtělo kontrolovat, kam směřují odkazy. Korektně napsaná procedura bude o něco složitější.citovat
icon #027541
eLCHa
@elninoslov
Nevím, jakou práci děláte a hlavně jak často se setkáváte se zadáním typu - tady máš tohle a potřebuji tohle. A včera bylo pozdě.

Já ledince rozumím a působí to na mne tak, že ví, že když je čas, je určitě jiná cesta jak to udělat. Je otázkou, jestli je lepší provést traspozici výstupu, jak to dělá ona nebo vstupů. Vidím tam, že se pracuje s KT (ZÍSKATKONDATA), takže jsem si celkem jistý, že to lze udělat jinak. To bychom ale museli být přímo u toho. V podstatě jsem uvažoval i nad tím, co napsal lubo, ale nakonec jsem se rozhodl prostě jen odpovědět na dotaz.

@ledinka
pokud toto řešíte jednorázově, mělo by Vám stačit to co jsem napsal. Nicméně pokud byste to dělala často (záleží na Vás, co ten pojem znamená), mohla byste zauvažovat o doplňku. Ten by mohl obsahovat více funkcí, které by byly po ruce, např. jednoduchou transformaci relativních vzorců do absolutních i lubovu cestu přenesení vzorců dotaženou k dokonalosti (tedy včetně "transformace vnitřních vzorců" transponované tabulky). Pak byste měla tyto funkce dostupné ihned pro kterýkoliv sešit.citovat
#027542
elninoslov
To je presne to čo mi nešlo, transponovať vnútorné vzorce. Treba na to ísť len inak, a ono to ide krásne. Palec hore.citovat
icon #027544
eLCHa
Mno - měl jsem chviličku času, tak jsem něco zkusil. Když už teda zase řešíme něco, co asi nepoužijeme ;))

Využil jsem toho, že operace Transponovat ty vzorce převádí. Takže jsem to zkusil přes dočasný soubor. Nemusím tak zjišťovat, kam odkazy směřují, protože odstraněním propojení se ty "vnější" mění na #REF!. Pro jednoduché vzorce s odkazy buď pouze "dovnitř" nebo "vně" tabulky to bude fungovat spolehlivě. Horší by bylo, kdyby byly použité kombinované vzorce, tzn. s odkazem "dovnitř i vně" tabulky. To není nic výjimečného, ale protože to nepoužiju, tak se mi do toho už moc nechce.
Příloha: zip27544_transpozicevzorce.zip (25kB, staženo 20x)
citovat

Strana:  « předchozí  1 2

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

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.

On-line nástroje