Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  2 3 4 5 6 7 8 9 10   další » ... 44

JE to na začátku kódu: Sub doplnSmeny()

Dim pojistka As Integer
Dim pocetJmen As Integer, posun As Integer, prvniJmeno As Integer
Dim radek As Long, sloupec As Long, radek1 As Long
Dim denSmeny As Integer
Dim nasobek As Integer
Dim svatky() As Variant

pocetJmen = 8 'počet jmen v tabulce
posun = 11 'velikost tabulky (počet řádků)
prvniJmeno = 11 'číslo řádku, n akterém je první jméno (pozice tabulky)


Jedná se o proměnnou "posun". Určuje jak daleko jsou od sebe tabulky. Tzn. první měsíc (tabulka) je na řádku 10, další měsíc (tabulka) začíná na řádku 25. posun = 15

Proměnná prvniJmeno je v podstatě druhý řádek tabulky. Říká, na kterém řádku začíná seznam zaměstnanců.

Jednotlivé měsíce musí být od sebe vždy stejně "daleko".

Nejlepší je vždy přiložit přílohu. Klidně bez citlivých dat. Řešení se pak hledá lépe a je to i rychlejší.

to @Stalker: pěkný.
Možná by to ještě chtělo doplnit, aby se, po uložení nového souboru, smazaly ty nově vzniklé listy ve zdrojovém souboru. 1

Jestli jsou to všechny možné varianty, tak by to mohlo být třeba takto:=IFERROR(IFERROR(HODNOTA(NAHRADIT(A3;NAJÍT(".";A3);1;","));HODNOTA(CONCAT(MĚSÍC(A3);",";ZPRAVA(ROK(A3);2))));A3)

Ovšem G3, H3 je podle mě špatně. v řádku 7,8,9 je datum formátováno jako mm.rr a v řádku 3 jako dd.mm. Takže co je správně?

Takže hodnoty z A1:A5 načtu do pole "myarray" pomocí cyklu (buňku po buňce), protože to vypadá, že mohou být vyplněny libovolně. Takže pokuď je v buňce text, uloží se do pole.

Sub IF_THEN1()
Dim Fname As String
Dim myarray()
Dim pocet As Integer, i As Integer

For i = 1 To 5 'prochází buňky A1 - A5
If Range("A" & i).Value <> "" Then 'pokud je v buňce text (pondeli - patek)
ReDim Preserve myarray(pocet)
myarray(pocet) = Range("A" & i).Value 'zapíši tento text do pole
pocet = pocet + 1
End If
Next i

If pocet = 0 Then Exit Sub 'pokud v A1:A5 není žádný text, makro se ukončí

Fname = Sheets("List1").Range("B14").Value

Sheets(myarray).Copy

With ActiveWorkbook
.SaveAs Filename:=Fname
.Close
End With
End Sub

Vložte soubor s makrem, které vám funguje s těmi ručně zadanými hodnotami.
Protože tam je makro, musí se soubor nejdříve zazipovat.

Tak použijte jednoduše třeba toto: Sub pole2()
Dim myarray(4) As Variant
myarray(0) = Sheets("List1").Range("A1").Value
myarray(1) = Sheets("List1").Range("A2").Value
myarray(2) = Sheets("List1").Range("A3").Value
myarray(3) = Sheets("List1").Range("A4").Value
myarray(4) = Sheets("List1").Range("A5").Value
End Sub


nebo toto:Sub pole()
Dim myarray(4) As Variant
For i = 0 To 4
myarray(i) = Sheets("List1").Range("A" & i + 1).Value
Next
End Sub

Tohle jsem já určitě neřešil.

V jaké verzi excelu to nejede?

Odkaz je neplatný

Vzorec vám nevysvětlím, protože to neumím. Jen jej používám.
Vysvětlení je tady: https://vtm.zive.cz/clanky/velikonoce-termin-datum/sc-870-a-197802/default.aspx

Tak už to umí i svátky.

Zásadní je mít v buňce A10 zadané datum a to první den v roce: 1.1.2022 nebo 1.1.2023 - od toho se počítá vše ostatní včetně svátků.

Buňky AH, AI a AJ jsou něčemu?

Pole musí být deklarované jako dynamické a typ Variant:
Sub pole()
Dim myarray() As Variant
myarray = Sheets("List1").Range("A1:A5").Value
End Sub


Taky je třeba myslet na to, že vznikne dvourozměrné pole. V tomto případě se jedná o pole: myarray(1 To 5, 1 To 1)

Třeba buňka A10.
Já tam mám zadané datum 1.1.2022 a zobrazuje se leden.

Vy máte v buňce A10 text "leden", který jste si pomocí funkce SVYHLEDAT dosadil z tabulky, kde máte pravděpodobně ve sloupci čísla 1 - 12 a v druhém sloupci text leden - proinec.

To samé řádek C9:CF9 - já tam mám datum a zobrazuje se jen zkrácený název dne (po - ne) a vy tam máte opět přes SVYHLEDAT dosazené z jiné tabulky texty po - ne.

Vy tam máte řádek 19 zřejmě jen kvůli podmíněnému formátu. Mně by k tomu stačil ten řádek 9, kde mám datum a podle něj mohu nastavit podmíněné formátování.

Myslím si, že řádek 9 tam máte také kvůli kontrole o který den se jedná. Pokud tam tedy není kvůli vizuální stránce.

Takže by stačil řádek 10, kde bude celé datum (ale bude se zobrazovat jen číslo dne 1 - 31) a ušetřím řádky 9 a 19.

Trošku jsem na to mrknul.
Co to dělá:
Vyberu si buňku v rámci měsíce, kliknu na tlačítko a doplní se směny počínaje vybranou buňkou do konce měsíce.

Neumí to zohlednit svátky.
Je to jen takový nástin řešení.

Zadáváte tam dny a měsíce přes SVYHLEDAT, to stačí udělat přes formát buňek, pokud to tedy nemá nějaký jiný účel.

Počet zaměstnanců se během roku může změnit?
Tzn. může nastat situace, že např. v květnu bude zaměstnanců 8, v červnu 10 a od srpna 9?

Kalendář máte na celý rok nebo v průběhu měsíce vytvoříte další měsíc?


Strana:  1 ... « předchozí  2 3 4 5 6 7 8 9 10   další » ... 44

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