Pokud to trochu zjednoduším, tak můžeme považovat value za objekt a value2 za hodnotu.
Používám value2 pro čtení i pro zápis (podle dat a potřeb, některé vlastnosti se nepřenášejí), po zápisu raději zkontroluji.
Je to o hodně rychlejší a pro větší data se práce vyplatí. Pokud použijeme v testu value2, dostaneme o dost jiný čas.
Sub test()
Dim t As Double
t = Evaluate("=NOW()")
Dim i As Byte
Dim a
Dim b
b = Selection.Value2
For i = 0 To 254
a = Application.Transpose(b)
Next i
Debug.Print WorksheetFunction.Text(Evaluate("=NOW()") - t, "m:ss.000")
End Sub
Pokud je to číslo tak třeba
=SVYHLEDAT(9E307;G:G;1)
Pokud text tak
=SVYHLEDAT("žžžžžžžžžžžž";G:G;1)
Nebo lze také upravit makro a nechat ho zpracovat jednotlivé sešity.
Trochu netradičně:
=WORKDAY.INTL(A1-1;1;"0111111")
první po nebo středa:
=WORKDAY.INTL(A1-1;1;"0101111")
...
Lze snadno doplnit o slovo "pracovní"
(V A1 je první den měsíce)
@123456
Pokud žádám o radu, tak si dám práci a napíšu co opravdu chci. Opakovaně jste byl upozorněn, naposledy od xlnc, že dotaz/požadavek není srozumitelný. A podle reakce, se mi to jeví tak, že jste opravdu při nejmenším dost nechápavý.
Pokud má být výstupem jedna řádka, tak použijte filtr na zdrojovou tabulku a máte to bez vzorců a maker.
Ale to také hádám.
Jednoduchá varianta - pomocný sloupec a třeba
=MOD(ŘÁDEK();10)
pak filtrem buď skrýt zbytečné řádky, nebo data zkopírovat jinam.
Pokud lze použít xy graf lze postup zozšířit:
Obvykle jsou zajímavá místa, kde se něco děje.
tj. třeba do dalšího sloupce
=KDYŽ(ABS(A11-PRŮMĚR(POSUN(A10;-9;0;10;1)))>2*SMODCH.P(POSUN(A10;-9;0;10;1));0;10)
- vloží 0 pokud akt. bod se významněji liší od předchozích 10 hodnot
V tomto případě je ale krok nestejný mezi body a je tedy vhodné použití xy grafu.
(doporučuji filtrovat hodnotu 0, pak se dá snadněji měnit počet vybraných položek a není třeba na tyto drobnosti myslet)
Neuvedl jste verzi. U mne (2010) při manuální aktualizaci excel tvrdí, že pokud je připojen průřez, tak zdroj nezmění.
Pokud takto, tak je potřeba znovu kt průřezu připojit.
Druhá varianta - vytvořte tabulku nebo pojmenujte dynamickou oblast a uveďte je jako zdroj. Potom refresh stačí.
Count je long tj. max číslo je 2147483647
Už dávno se používá
ActiveSheet.Cells.CountLarge což je variant.
Pokud jsou ve sloupci A hodnoty unikátní, vyberte sloupce A a B a podmíněným formátem označte duplicty.
Co není ve sloupci A vybarveno chybí ve sloupci B
Bez zjednodušení to nepůjde.
Zkuste použít aspoň procedury:
např. v Layout se pořád opakuje
If DataPrace.Zakazka01.Enabled = True And DataPrace.TbLinka01.Value = "" Then DataPrace.TbLinka01.Value = "WH RH"
If DataPrace.Zakazka02.Enabled = True And DataPrace.TbLinka02.Value = "" Then DataPrace.TbLinka02.Value = "WH RH"
...
Udělejte z toho proceduru, kde parametrem je potřebný text, celý kód bude čitelnější.
V DataPrace se pořád opakují stejné operace, zkuste procedury
sub Udelej(TbLinka as object, TbHodPrace as object, ...)
TbLinka.Value =c
TbLinka.Height = 50
...
end sub
pak v kódu
Udelej TbLinka02, TbHodPrace02,
Jednotlivé prvky můžete vložit do pole
Na začátku
Dim Zakazka(1 to 18) as object
Private Sub UserForm_Initialize()
set Zakazka(1)=Zakazka01
set Zakazka(2)=Zakazka02
set Zakazka(3)=Zakazka03
...
End Sub
for i =10 to ubound(Zakazka)
Zakazka(i).visible= true
next
Z legendy se to odstraní klávesou delete, tlačítka nahoře lze skrýt.
Zbývá zneviditelnit samotná data.
Možnosti:
- Zobrazit na vedlejší ose, vhodně nastavit rozsah a formát osy
- Změnit formát nepohodlné řady tak, aby zmizela (rozsah osy bude ale nutné nastavit ručně).
- Použít pomocnou proměnnou, která bude "malá". Např. "soucet nedostupnosti" / 1000
a třídit podle pomocné proměnné.
Tak tady je
A) ve sloupci A směs čísel a textů. Doporučuji sjednotit.
B) Hledaná hodnota je text. Ve funkci převést na typ, který bude ve sloupci A.
C) Funkce SVYHLEDAT bez 4. parametru předpokládá setříděný sloupec A. V tomto případě není, jen to tak vypadá. (Číslo je při porovnání menší než text.)
xlnc navrhuje vše opravit vzorcem, já bych spíše doporučil udělat pořádek v datech.
Nejvyšší hodnota, kterou lze vložit jako čas je 9999:59:59,9999
Pokud se zadá vyšší hodnota, je vložena jako text.
Nejvyšší hodnota času, kterou lze vložit pomocí funkce je 71003160:00:00,0. Tj. 31.12.9999 23:59:59, případně 2958465,999999.
Pokud budete zadávat jen hodiny:minuty (vloží se text) můžete to pro výpočet převést na čas vzorcem
=DOLLARDE(DOSADIT(A1;":";",");60)/24
Do H2:
=KDYŽ(JE.ČISLO(I2);COUNTIFS($I$2:$I$42;"<"&I2;$C$2:$C$42;C2)+1;I2)
Mrkni na "MZ-Tools for VBA 3.0"
Review Source Code hledá nepoužité promenné a nepoužitý kód.
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.