Jde to například klasicky přes funkci KDYŽ. Z funkce NYNÍ lze vypreparovat HODINA i MINUTA, a pak již stačí jenom vhodně testovat s pomocí výrokové logiky (A, NEBO).
P.
Např.:=KDYŽ(NEBO(HODINA(NYNÍ())>18;A(HODINA(NYNÍ())=18;MINUTA(NYNÍ())>0));"Noční";KDYŽ(NEBO(HODINA(NYNÍ())<6;A(HODINA(NYNÍ())=6;MINUTA(NYNÍ())=0));"Noční";"Denní"))
Budeš muset měnit oblast dat, ze které se berou data do daného grafu, a tuto oblast určit dle testování na zmíněnou podmínku...
A toto právě vyřeší ono makro.
P.
Rozumím tomu dobře, že jeden týden má ranní Jirka a druhý týden Petr?
Pak by přece stačilo pouze klasické kopírování, nebo opět vhodně "natáhnout"...
P.
Vytřídění dle kategorií lze udělat klasicky filtrem, stačí filtrovat danou kategorii. Výslednou tabulku lze pak překopírovat (pouze hodnoty) někam jinam. Zautomatizovat by to šlo třeba přes nějaké makro.
Samotné přidělení do kategorie lze např. přes vytvořenou legendu, v které by byly přiřazeny kategorie k jednotlivým položkám.
P.
Např. takto...
P.
Viz příloha:
Tady není makro potřeba, umí to přímo Excel. Na kartě Domů máš položku Podmíněné formátování. Stačí si s tím jenom pohrát...
P.
Bude stačit podmíněné formátování. Formátování nastav na základě vzorce.
P.
Uložil jsi soubor zřejmě bez maker, takže tam žádný formulář není.
To co popisuješ se ale dá řešit stejnou funkcí i uvnitř formuláře. Ve VBA ale musíš použít anglické názvy funkcí a jelikož tato funkce zřejmě není "přímo součástí" jazyka, tak si ji musíš zavolat z Excelu přes WorksheetFunction.
P.
Př.:hodnota = WorksheetFunction.VLookup("Fiat", Range("A5:B7"), 2, False)
Tiskové "pole" se nastavuje s pomocí PrintArea, kde pak stačí využít proměnnou s hodnotou daného řádku.
Jenom ještě poznámka, to číslo řádku máš s desetinnou částí. Nastavil jsi tam sice formát, ale Excel dále počítá i s částí za čárkou. Proto jsem v řešení ještě využil funkci Round.
P.
Př.:Sub Nastaveni_oblasti_tisku()
Dim radek As Double
radek = Round(ActiveSheet.Range("N5").Value, 0)
ActiveSheet.PageSetup.PrintArea = Range("A1:B" & radek).Address
End Sub
Fce mi doplní duplicitní hodnoty, ale již nepřiřadí správné jméno (jen první z tabulky dat).
Tady je problém právě s těmi duplicitními hodnotami. Funkce SVYHLEDAT ti vrátí data k první nalezení položce, takže k té druhé se už nedostane...
Navíc ten tvůj výběr TOP5 není úplně logicky správně. Když budeš mít, jak píšeš, spousty duplicitních hodnot, tak se může stát, že tam bude 10 lidí s 18 body. V tom případě pak bude na prvním místě 10 lidí. V tomto konkrétním souboru jsi např. úplně zapomněl, že 12 bodů mají tři lidé...
Nejjednodušší bude řešení bez vzorců s použitím filtru. Překopíruj celou tabulku (pouze hodnoty) a aplikuj filtr s požadovaným nastavením.
P.
Je to klasické přiřazení.
Zmíněné odřádkování můžeš udělat např. s pomocí "vbCrLf".
P.
Př.:Sub pridej_hodnotu_do_A1()
If ActiveSheet.Range("A1").Value = "" Then
ActiveSheet.Range("A1").Value = Application.InputBox("Zadejte hodnotu", _
"Dialog pro zápis do A1", "")
Else
ActiveSheet.Range("A1").Value = Application.InputBox("Zadejte hodnotu", _
"Dialog pro zápis do A1", "") & vbCrLf & ActiveSheet.Range("A1").Value
End If
End Sub
Vytvoř a nahraj cvičný soubor s příkladem.
P.
Trošku víc to rozepiš, z toho souboru toho moc vyčíst nelze :-).
P.
Přesně to jsem udělal a jede mi to...
Co ta chybová hláška?
P.
Chyba bude asi někde jinde, to co popisuješ, samozřejmě normálně jde ;-). Zkoušel jsem to...
Napiš přesně co ti to udělá. Jenom to spadne, nebo to hodí i nějakou chybovou hlášku? Podívej se taky, jestli pak někde v dalším kódu neděláš s tou proměnnou nějaké psí kusy... Např. jestli ti tam někde nepřeteče, Byte má rozsah jen do 255.
P.
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.