Option Explicit
Sub SetPageBreaks()
Dim pb As HPageBreak
For Each pb In ActiveSheet.HPageBreaks
With pb
If .Location <> .Location.MergeArea.Cells(1, 1) Then
Set .Location = .Location.MergeArea.Cells(1, 1)
End If
End With
Next pb
End Sub
Osetrenie pripadnych chyb si uz odladis, vsak? Na vzorovom subore to funguje, neviem, co vsetko moze nastat v reale.
A nestacilo by ciste nahodou prepnut do zobrazenia koncov stranok (mozno sa to vola trochu inak, kazdopadne, je to na stavovom riadku vpravo ten treti sposob zobrazenia, anglicky Page Break Preview) a nasledne si na sheete rozdelovanie stranok upravit rucne posunutim rozdelenia do pozadovanej polohy?
Mimochodom, zahlavim a zapatim v Exceli sa nemysli to, comu tak hovoris Ty.
@elninoslov
miesto (((N6:N20="y")+(N6:N20="c"))>0) stačí v tvojom vzorci zadať ((N6:N20="y")+(N6:N20="c")), ak to chceš jednoduchšie :)
Napríklad takto:
=SUMPRODUCT(M6:M6000*((N6:N6000="Y")+(N6:N6000="C"))*(LEFT(B6:B6000;2)="TZ"))/SUMPRODUCT(((N6:N6000="Y")+(N6:N6000="C"))*(LEFT(B6:B6000;2)="TZ"))
Ak to TZ môže byť i niekde uprostred reťazca, potom trebárs takto:
=SUMPRODUCT(M6:M6000*((N6:N6000="Y")+(N6:N6000="C"))*((LEN(B6:B6000)-LEN(SUBSTITUTE(B6:B6000; "TZ";"")))=2))/SUMPRODUCT(((N6:N6000="Y")+(N6:N6000="C"))*((LEN(B6:B6000)-LEN(SUBSTITUTE(B6:B6000; "TZ";"")))=2))
Iná možnosť napr, maticovo:
=IFERROR(AVERAGE(IF(ISNUMBER(MATCH(N6:N6000;{"Y";"C"};0));IF(LEFT(B6:B2000;2)="TZ";M6:M6000)));"")
Niekedy je ale kvôli prehľadnosti výpočtu predsa len vhodné použiť pomocný stĺpec a v ňom otestovať podmienku (napr. na prítomnosť Y alebo C v stĺpci status z hore uvedeného zadania).
@Lubo:
Dakujem, log som s Tvojou pomocou objavil. Ale vobec tym zaznamom v logu nerozumiem, takze to necham pre tuto chvilu byt.
Lubo, ladenie je nutne, nepriem sa, obcas som na nejaky problem so synchronizaciou narazil, ale vzdy sa mi nakoniec podarilo nad tym nejako zvitazit. Nespochybnujem nic z toho, co tu pises a urcite je dobre vediet o tom, ze problem nastat moze.
Mám otázku. O akom logu hovoríš? Kde (ako) sa k nemu prípadne dostanem?
@ Lubo
Myslel som to tak, ze pomocou VBA riadim aktualizaciu QueryTable:
SheetXXX.ListObjects("MenoTabulky").QueryTable.Refresh BackgroundQuery:=Falsemi pre moje potreby funguje celkom spolahlivo
Nie, ze by to vzorcami neslo, ale jednoduchsi je rozsireny filter alebo powerquery.
GETPIVOTDATA je prima funkcia, ale ako parametre ocakava identifikator zakaznika, pokial chceme vidiet rozpad skladu po jednotlivych zakaznikoch (pre dane ID materialu). Inymi slovami, pokial ma GETPIVOTDATA davat nejaky zoznam, tak by bolo treba poznat ID zakaznikov definovany dopredu. To, co chce kolega, sa da napr. i rozsirenym filtrom nad zdrojovymi datami, ale pokial to ma byt na tlacitko, tak i to chce aspon kusok nie prilis zloziteho VBA scriptu.
Ako som uviedol v predoslom prispevku, osobne by som sa vydal cestou riesenia v powerquery. Toho VBA kodu bude v takom pripade potreba velmi malo, ale nejaku skusenost si to uz ziada, to je pravda.
Aha, uz chapem, miatol ma ten "konkretny zakaznik", nakolko 52.500 nie je viazanych na "konkretneho zakaznika" ale "konkretnych zakaznikov"
To co chces, by slo, a nebolo by to nijako zlozite, ale ja na to bohuzial nemam cas, takze iba navod:
Pokial by som to riesil ja, tak udalostnym makrom, po kliku do bunky by sa spustil dotaz v PowerQuery. V powerquery si mozes ten dotaz nadefinovat. Parametrom bude cislo materialu. Vysledok dotazu by sa potom zobrazoval napr. v query table asi na nejakom samostatnom liste. Sucastou udalostneho makra by mohlo byt, aby sa po spusteni dotazu aktivoval list s prislusnou query table.
Nerozumiem zadaniu, takze asi neporadim. Iba poznamky:
V listu "Sklad" je sloupec F kde je celková hodnoty skladu - neviem, nepriem sa, ale to cislo tam je natvrdo, takze netusim, odkial sa berie
v sloupci I je hodnota skladu která je vázaná na konkrétního zákazníka - skutocne? Tak, ako to je pocitane, to nie je hodnota viazaná na zákazníka.
Čo si predstavuješ pod pojmom detail z hodnot v KT?
Klikaj priamo v KT (double click)
@ Petr
ako kritériá použiješ:
<= Datum od
> Datum do
naozaj to ide, ako píše Lubo
okrem sumifs a posun sa dá použiť i konštrukcia, ktorú sa pokúsim napísať schematicky:
=SUM(ARG1:ARG2), kedy ARG1 i ARG2 určím cez funkciu INDEX
Píšem teda =SUM(INDEXod:INDEXdo), s príslušnou syntaxou funkcie INDEX, ktorou určím rozsahy OD - DO.
Snáď som to popísal zrozumiteľne.
K tej chybovej hlaske: Then musi byt na samostatnom riadku, rozdel If a Then na 2 riadky
Prepac, ale za tych 6 ci kolko rokov, co sem chodis, si sa mohol tieto naozaj zaklady uz naucit. Nahraj si makro, ked budes vkladat ako hodnoty (paste special - values) nahraty kod nasledne precicti, zmodifikuj a prirad pod klavesovu skratku. To zvladnes i sam, na to pomoc nepotrebujes, musis sa ale trochu snazit.
edit: tak bohuzial, nativnu vlastnost ctrl+v asi nepotlacis, aspon mne sa to nedari
ja mam kopirovanie hodnot priradene pod ctrl+shift+v, a tu je v podstate jednoriadkova instrukcia ziskana zaznamnikom makra: Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks :=False, Transpose:=False
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.