@AL - Já to používám následovně:
Když chci něco skrýt, tak abych o tom věděl "jenom já", tak skryji sloupce. Mám prakticky jistotu, že si toho management vůbec nevšimne, případně to budou ignorovat. Takže skrývám pomocné sloupce, případně hodnoty, které nemají pro vedení žádný smysl.
Když chci, aby měl management možnost si některé hodnoty zobrazit, ale nejsou až tolik důležité, případně zabírají moc místa, tak využívám seskupování sloupců.
P.
Pokud vím, tak to přímo nejde. Nicméně se to dá určitými způsoby "obejít".
Možnosti:
1.) Sice nelze přímo filtrovat více barev, ale lze dle více barev řadit. Takže jednou z možností je seřadit dle požadovaných barev a ostatní řádky skrýt.
2.) Pokud máš buňku obarvenou dle nějakého jasného kritéria, tak stačí přidat další pomocný sloupec, kde toto kritérium vložíš, tak abys tam měl nějaké jasné hodnoty (například si udělat číselník apod.).
3.) Dá se to řešit třeba i vlastní funkcí, podle které si určíš, jakou barvu daná buňka má.
Do Modulu vložit:Function Barva_pozadi_bunky(bunka As Range) As Long
Barva_pozadi_bunky = bunka.Interior.Color
End FunctionPráce s touto funkcí je pak standardní, do buňky v pomocném sloupci vložit vzorec:
=Barva_pozadi_bunky(A2)Výsledkem už nebude barva, ale číselné označení barvy, podle které lze již standardně filtrovat více hodnot. Pro management pak samozřejmě pomocný sloupec skrýt ;-)...
P.
Já už ho napsal, tak posílám...
P.
Např.:
Sub Skryt_rozmezi_sloupcu()
Cells.Columns.Hidden = False
Range(Cells(, Range("A1").Value), Cells(, Range("A2").Value)).Columns.Hidden = True
End Sub
Řešil bych bez tlačítka přes podmíněné formátování...
P.
Chyba bude asi někde mezi klávesnicí a židlí ;-).
Vychází to správně, 9.10.2016 = 7.
Případně vlož přílohu...
P.
Př.:
=DENTÝDNE(DNES();2)
Funkce DENTÝDNE ti vrací čísla 1 až 7 - pořadové číslo dne v nastaveném typu týdne. U nás začíná týden pondělím, v některých zemích např. nedělí, proto tam jsou ty možnosti.
U nás má tedy pondělí číslo 1, v jiných zemích může mít 2...
P.
Word se dá vložit do Excelu jako objekt.
Postup:
1.) Označit ve Wordu požadovanou oblast + kopírovat.
2.) Na volném listu v Excelu dát Vložit jinak / Objekt Dokument aplikace Microsoft Word.
Následně pak stačí již jen myší dvakrát poklepat, a můžeš libovolně editovat v klasickém Wordovském prostředí.
Osobně ale dávám přednost dvěma samostatným souborům. Nejlépe samozřejmě každý na samostatném monitoru ;-)...
P.
Napadá mě řešení přes událost listu Worksheet_Change a pomocný sloupec, ve kterém budeš uchovávat minulé hodnoty (sloupec můžeš pak klidně skrýt, takže nebude mít vliv na design).
P.
Např. (pro pomocný sloupec "B"):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Byte
Dim radek As Byte
Dim hodnota_bunky As String
For i = 1 To 20
If (Cells(i, 1).Value <> "") And (Cells(i, 2).Value = "") Then
radek = i
hodnota_bunky = Cells(i, 1).Value
Range(Cells(1, 1), Cells(20, 2)).ClearContents
End If
Next i
On Error Resume Next
Cells(radek, 1).Value = hodnota_bunky
Cells(radek, 2).Value = hodnota_bunky
End Sub
Přilož možná názornou ukázku, ať víme, čeho přesně chceš dosáhnout...
P.
Vlož přílohu...
P.
"Ano, to je možné."
P.
Za předpokladu, že se textové pole bude mazat pouze při spuštění tohoto konkrétního makra (ruční zrušení filtru uživatelem neřeším):
Sub Filtr_dle_vybrane_bunky_5()
Dim pole_filtru As Byte
Dim text_do_pole As String
If ((ActiveCell.Column = 6) And (ActiveCell.Row >= 14)) Or (ActiveCell.Column = 11) Then
pole_filtru = 4
text_do_pole = Application.WorksheetFunction.VLookup(ActiveCell.Value, Range("F14:G10000"), 2, False)
ElseIf ActiveCell.Column = 8 Then
pole_filtru = 1
text_do_pole = ActiveCell.Value
ElseIf ActiveCell.Column = 9 Then
pole_filtru = 2
text_do_pole = ActiveCell.Value
End If
If pole_filtru > 0 Then
On Error Resume Next
ActiveSheet.ShowAllData
ActiveSheet.Range("$H$1:$K$10000").AutoFilter _
Field:=pole_filtru, Criteria1:=ActiveCell.Value
ActiveSheet.TextBox1.Value = text_do_pole
Else
ActiveSheet.TextBox1.Value = ""
End If
End SubP.
Vzhledem k interpunkci, která je využita v zadání, mi to jasné nebylo... ;-)
Pokud chce toto, pak měl napsat:
"čti název txt souboru, který ukládáš, z buňky",
a nikolov:
"čti název txt. souboru, který ukládáš z bunky".
Stěžejní je ta čárka za "ukládáš", proto mě to nedávalo smysl.
Já si říkal, co myslí tím čtením názvu souboru, který se ukládá z buňky :D.
P.
Za předpokladu, že máš textové pole (v kódu název TextBox1) jako Ovládací prvek ActiveX (Vývojář / Vložit / Ovládací prvky ActiveX / Textové pole):
Sub Filtr_dle_vybrane_bunky_4()
Dim pole_filtru As Byte
Dim text_do_pole As String
If ((ActiveCell.Column = 6) And (ActiveCell.Row >= 14)) Or (ActiveCell.Column = 11) Then
pole_filtru = 4
text_do_pole = Application.WorksheetFunction.VLookup(ActiveCell.Value, Range("F14:G10000"), 2, False)
ElseIf ActiveCell.Column = 8 Then
pole_filtru = 1
text_do_pole = ActiveCell.Value
ElseIf ActiveCell.Column = 9 Then
pole_filtru = 2
text_do_pole = ActiveCell.Value
End If
If pole_filtru > 0 Then
On Error Resume Next
ActiveSheet.ShowAllData
ActiveSheet.Range("$H$1:$K$10000").AutoFilter _
Field:=pole_filtru, Criteria1:=ActiveCell.Value
ActiveSheet.TextBox1.Value = text_do_pole
End If
End SubTeď už bych ti měl jenom poslat číslo účtu :-D...
P.
Z obrázků to luštit asi nebudeme. To chce přímo excelovský sešit.
Já osobně tomu navíc moc nerozumím, když dokážeš získat celkovou tržbu, tak dokážeš vypočítat i celkovou marži (cena zboží * % marže * počet kusů), ne? Princip bude přece stejný...
P.
Pozn.:
Pokud chceš sčítat buňky dle podmínek, tak lze využít funkci SUMIFS.
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.