Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  5 6 7 8 9 10 11 12 13   další » ... 228

??? Pole oblastí ??? Alebo o čo ide ?
Sub Kopiruj_do_oblasti_X()
Dim OBLAST() As Range
Dim X As Integer

ReDim OBLAST(1 To 3)
With List16
Set OBLAST(1) = .Range("D8:D19") 'naplnenie poľa oblastí, pri väčšom množstve cyklom
Set OBLAST(2) = .Range("E8:E19")
Set OBLAST(3) = .Range("F8:F19")

X = .Range("D4").Value 'index oblasti X

If IsNumeric(X) Then 'zápis zdroju do oblasti X
If X >= LBound(OBLAST) And X <= UBound(OBLAST) Then OBLAST(X).Value = .Range("C8:C19").Value
End If
End With

'Ak ide len o priradenie zdroju C9:C19 do premennej Range podľa X, a nie o kopírovanie hodnôt potom stačí:
'Set OBLAST(X) = List16.Range("C8:C19")
'ale tu nepoznáme presné použitie, o čo ide ...
End Sub

foundRange je 1 bunka? Je v tom istom riadku ako dátum? Je to naozaj dátum alebo text? ... Malo by to fungovať ...
Príloha

Cez OFFSET/POSUN sa dá nastaviť veľkosť oblasti (3. a 4. parameter), alebo INDIRECT/NEPŘÍMÝ.ODKAZ.
Príklad:
=AVERAGE(IF(WEEKDAY(OFFSET($N$1;;;D2);2)=C5;OFFSET($M$1;;;D2)))
=PRŮMĚR(KDYŽ(DENTÝDNE(POSUN($N$1;;;D2);2)=C5;POSUN($M$1;;;D2)))

No tak dajte priemer všetkých hodnôt (maticovo):
=AVERAGE(IF(data!B:B=A3;data!E:E))
=PRŮMĚR(KDYŽ(data!B:B=A3;data!E:E))

alebo väčšia konštrukcia bez matice a s kontrolou iba skutočne zaplnených oblastí, nie celých stĺpcov (pretože dátumy sú zoskupené):
=AVERAGE(OFFSET(data!$E$2;MATCH(A3;OFFSET(data!$B$3;;;COUNT(data!B:B));0);;COUNTIF(OFFSET(data!$B$3;;;COUNT(data!B:B));A3)))
=PRŮMĚR(POSUN(data!$E$2;POZVYHLEDAT(A3;POSUN(data!$B$3;;;POČET(data!B:B));0);;COUNTIF(POSUN(data!$B$3;;;POČET(data!B:B));A3)))

Prípadne to zjednodušiť tak, že sa dá aspoň ten jeden OFFSET do def. názvu OBLAST
=OFFSET(data!$B$3;;;COUNT(data!B:B))
=POSUN(data!$B$3;;;POČET(data!B:B))

a následne
=AVERAGE(OFFSET(data!$E$2;MATCH(A3;OBLAST;0);;COUNTIF(OBLAST;A3)))
=PRŮMĚR(POSUN(data!$E$2;POZVYHLEDAT(A3;OBLAST;0);;COUNTIF(OBLAST;A3)))

prípadne obdobne ...

Áno, v nových Office to je, v starších treba nahradiť maticovým vzorcom.

Ak je to tak ako si predstavujem, tak to sa musí dať skrátiť, a to podstatne. Ak chcete pošlite vzorku dát, bez citlivých údajov. Aj s makrom. Keď bude čas pozriem.

Koľko Vám také makro trvá, ak idete po jednej bunke/riadku pri 500K Read a 250k Write?

To záleží na mnohých veciach. Príklad:
let
Zdroj = Excel.CurrentWorkbook(){[Name="Tabuľka1"]}[Content],
#"Zmenený typ" = Table.TransformColumnTypes(Zdroj,{{"Meno", type text}, {"Počet", Int64.Type}}),
PoslednyStlpec=List.Last(Table.ColumnNames(#"Zmenený typ")),
PrvaHodnota = Table.Transpose(Table.SelectColumns(#"Zmenený typ", PoslednyStlpec)){0}[Column1],
#"Pridané vlastné" = Table.AddColumn(#"Zmenený typ", "Vlastné", each PrvaHodnota)
in
#"Pridané vlastné"

Skúste
Range("E1:R1").Offset(RadekVysledek1 - 1, 0).Value = VyslCetnost1
alebo upravte premennú "RadekVysledek1", aby mala hodnotu nie riadku, ale posunu. Teda o koľko musím E1:R1 posunúť dole.
Ale 250K riadkov, to sa načakáte.
To by bolo lepšie urobiť 2 rozmernú maticu (ak viete počet riadkov), alebo (ak neviete dopredu počet) najskôr dočasnú kolekciu či dočasné pole matíc, a na konci ich v cykle spojiť do už známej veľkosti. Zapísať naraz, alebo aspoň vo veľkých blokoch. To sa ale najlepšie rieši s prílohou.

Ak sa nespracováva tá premenná aj niekde inde, tak ju netreba:
Worksheets("List2").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Worksheets("List1").Cells(1, 1).Value

Nedovolí to systém. Ten v systémovej zložke Users, kvôli prístupovým právam, nedovolí zápis do iných zložiek, ako je Vaše konto. Ak dám súbor inde, do nesystémovej zložky, na iný disk, alebo do svojej zložky v Users, tak to prejde.

Možno zbytočne komplikované čáry-máry so stĺpcami, ale funkčné. Takto som to pochopil ja.

Ten dátový model je obrovský. Úpravy už len bez neho. Prekopaný kód na GoogleDrive.

With Range("B4").FormatConditions.Add(Type:=xlExpression, Formula1:="=AND($B4=""/n"";$N4<>3333)")
.Font.Bold = True
.Interior.Color = vbRed
End With

Ale problém je v jazykovej mutácii Excelu. FormatConditions nemá možnosť vkladať vzorce v lokálnom prevedení (FormulaLocal). Bežne sa ale vo VBA vkladajú EN vzorce. No zrovna FormatConditions vkladá Local vzorce. Problém ale niesú len preklady, ale aj oddeľovače "," vs ";". Riešením by možno bolo dočasne rýchlo vložiť do bunky (alebo do Def. názvu) EN vzorec cez Formula, a prečítať ho naspäť ako FormulaLocal, a tento prečítaný vložiť do FormatConditions, keďže tam sa vkladajú len FormulaLocal. Pokus som ale nerobil. Možno neskôr...
Samozrejme v CZ nie je AND ale je tam A.

EDIT: tak predsa rýchlo...
Names.Add "LOCAL_HELP", RefersTo:="=AND($B4=""/n"",$N4<>3333)"
With Range("B4").FormatConditions.Add(Type:=xlExpression, Formula1:=Names("LOCAL_HELP").RefersToLocal)
.Font.Bold = True
.Interior.Color = vbRed
End With
Names("LOCAL_HELP").Delete

Ale kurzor musí byť na 1 riadku, v tomto prípade na B1.

Pre všetky Def. názvy v JANUARY máte rozsah "Zošit". Takže ich voláte iba názvom Def. názvu. Na rozdiel od toho všetky okrem JANUARY majú Def. názvy s rozsahom pre daný list, takže ich voláte napr. FEBRUARY!SUM_JK_LK. Zrovnajte si rozsahy Def. názvov a je to. (musíte ich zmazať a vytvoriť znovu so želaným Rozsahom)


Strana:  1 ... « předchozí  5 6 7 8 9 10 11 12 13   další » ... 228

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Vodorovný teploměr v buňce

GeorgeK • 1.12. 12:26

Vodorovný teploměr v buňce

elninoslov • 1.12. 10:21

Vodorovný teploměr v buňce

Stalker • 1.12. 10:01

Vodorovný teploměr v buňce

GeorgeK • 1.12. 9:15

Spustit makro v určitý čas

Baja • 28.11. 20:11

Spustit makro v určitý čas

elninoslov • 28.11. 17:09

Spustit makro v určitý čas

Baja • 28.11. 12:51