Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  99 100 101 102 103 104 105 106 107   další » ... 298

Osekajte "trochu" tie data, či sa nevojdete do 300 KB. Ak nie, použite niektorú online Free službu, alebo určite sa v rodine nájde niekto s telefónom s Androidom, teda má určite účet Google, a ku každému je automaticky 15 GB Cloud "Google Disk" ("Google Drive"). Nahrajte, kliknite pravým a dajte Získať odkaz na zdieľanie (či tak nejak), a ten nám pošlite. Po vyriešení môžete z GD vymazať.

To musí isť do modulu listu, nie do normálneho modulu. Robil som to tak, aby to zvládlo viacnásobné zmeny, a tak som to aj testoval, ale netestoval som zmenu 1 bunky. Inak by ma trklo, že treba vo verzii 1 doplniť jednoprvkové pole. Takže upravené.
Vo verzii 2 by mohol nastať v špecifickom prípade kopírovania do multioblasti nesprávny výsledok. Išlo o to, že ak by ste skopíroval 2 bunky, a na vloženie by ste označil jednu 2 bunkovú oblasť a o niečo ďalej druhú 1 bunkovú oblasť, Excel automaticky vyplní aj tú jednobunkovú kópiou zdrojovej dvojbunkovej. A tá druhá vrátila zlý výsledok. To si musíte vyskúšať. Opravené.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zmena As Range, Are As Range, Kde(), H(), i As Long

Set Zmena = Intersect(Cells(2, 2).Resize(Rows.Count - 1), Target)
If Zmena Is Nothing Then Exit Sub
Kde = Worksheets("List2").Range("B2:C27").Value

Application.ScreenUpdating = False
Application.EnableEvents = False

On Error Resume Next
For Each Are In Zmena.Areas
With Are
If .Rows.Count = 1 Then ReDim H(1 To 1, 1 To 1): H(1, 1) = .Value Else H = .Value
For i = 1 To UBound(H, 1)
H(i, 1) = WorksheetFunction.VLookup(H(i, 1), Kde, 2, False)
If Err.Number <> 0 Then H(i, 1) = Empty: Err.Clear
Next i

.Offset(0, 1).Value = H
End With
Next Are

Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zmena As Range, Are As Range

Set Zmena = Intersect(Cells(2, 2).Resize(Rows.Count - 1), Target)
If Zmena Is Nothing Then Exit Sub

With Zmena.Offset(0, 1)
Application.ScreenUpdating = False
Application.EnableEvents = False

.Formula = "=IFERROR(VLOOKUP(B" & Zmena.Row & ",List2!$B$2:$C$27,2,FALSE),"""")"
For Each Are In .Areas
Are.Value = Are.Value
Next Are
Application.ScreenUpdating = True
Application.EnableEvents = True
End With
End Sub

2 varianty:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zmena As Range, Are As Range, Kde(), H(), i As Long

Set Zmena = Intersect(Cells(2, 2).Resize(Rows.Count - 1), Target)
If Zmena Is Nothing Then Exit Sub
Kde = Worksheets("List2").Range("B2:C27").Value

Application.ScreenUpdating = False
Application.EnableEvents = False

On Error Resume Next
For Each Are In Zmena.Areas
With Are
H = .Value
For i = 1 To UBound(H, 1)
H(i, 1) = WorksheetFunction.VLookup(H(i, 1), Kde, 2, False)
If Err.Number <> 0 Then H(i, 1) = Empty: Err.Clear
Next i

.Offset(0, 1).Value = H
End With
Next Are

Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zmena As Range

Set Zmena = Intersect(Cells(2, 2).Resize(Rows.Count - 1), Target)
If Zmena Is Nothing Then Exit Sub

With Zmena.Offset(0, 1)
Application.ScreenUpdating = False
Application.EnableEvents = False

.Formula = "=IFERROR(VLOOKUP(B" & Zmena.Row & ",List2!$B$2:$C$27,2,FALSE),"""")"
.Value = .Value

Application.ScreenUpdating = True
Application.EnableEvents = True
End With
End Sub

Nemusíte písať presne rovnaký vzorec ako tu už je. Stačí raz 5
A ako som písal, dotaz a skladba "podmienok" je logický nezmysel. Nemôže byť
podmienka 1 TRUE - "A"
podmienka 1 FALSE - "B" a zároveň podmienka 2 ...
buď je pri FALSE "B" alebo nieje.

Nakreslite si niečo ako vývojový diagram vetvenia podmienok, ako sa učilo pri programovaní, a hneď musí každému docvaknúť nelogickosť dotazu.

Možno by sa to dalo aj takto:
Ak je
A1<=100
alebo
A1<=150 a zároveň pritom B1 je v jednom z intervalov 100-567 alebo 580-599
tak
"A"
inak vždy "B"
=IF(OR(A1<=100;AND(A1<=150;OR(AND(B1>=100;B1<=567);AND(B1>=580;B1<=599))));"A";"B")
=KDYŽ(NEBO(A1<=100;A(A1<=150;NEBO(A(B1>=100;B1<=567);A(B1>=580;B1<=599))));"A";"B")

Logický nezmysel.

Pokud je váha v buňce A1 do 100 kg včetně, napiš A, jinak B

hotovo bodka. Žiadne "a zároveň pokud..."
číslo v buňce B1 od 100 do 567 a od 580 do 599

no buď je 100-567 ALEBO 580-599. Nie "A" ale "ALEBO".
A teraz tie 2 veci ešte skĺbiť do logickej podmienky. Skúste ešte raz, napísať vzorec sa dá, iba ak sú jasné pravidlá :)

EDIT: Kombinácie sa dajú predsa robiť takmer ľubovoľné, len musíme vedieť čo máte na mysli. Vaše zadanie podľa mňa riešenie zatiaľ nemá, tu je len príklad, že môžete používať kombinácie a vnorenia AND/OR/AND atď...
=IF(A1<=100;"A";IF(AND(A1<=150;OR(AND(B1>=100;B1<=567);AND(B1>=580;B1<=599)));"A";"B"))
=KDYŽ(A1<=100;"A";KDYŽ(A(A1<=150;NEBO(A(B1>=100;B1<=567);A(B1>=580;B1<=599)));"A";"B"))

To preto, lebo vkladáte vzorec, a ten vzorec tam ostane, čiže sa pri kalkulácii prepočíta. Ten vložený a vypočítaný vzorec prepíšte jeho hodnotou. z brucha (oblasti som spojil, lebo sú spojité):
Sub Start()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

With Range("T17:AM18")
.Formula = "=RANDARRAY(1,1,0,0.02,FALSE)"
.Value = .Value
End With
With Range("T19:AM20")
.Formula = "=RANDARRAY(1,1,1.47,1.51,FALSE)"
.Value = .Value
End With
With Range("T21:AM22")
.Formula = "=RANDARRAY(1,1,89.98,90.02,FALSE)"
.Value = .Value
End With
With Range("T23:AM24")
.Formula = "=RANDARRAY(1,1,142.47,142.53,FALSE)"
.Value = .Value
End With

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

So mnou ísť na pivo je na figu. Vypijem jedno a končím. Ja som taký "prd-chlap". 3

Keď už máte taký "fundamentalistický" postoj k zmene, tak som zmenil len nevyhnutné:
-Mesiac a rok "Leden "&srok určite nebude fungovať inde ako v CZ, teda ani mne, preto zmenené na univerzál.
-podmienené formátovanie z rovnakého dôvodu nefungovalo
-v jednej skupine (tuším B) ste mal zlé vzorce na "plné směny v měsíci
-na sviatky neprehľadávajte celý stĺpec B:B, keď máte len 13 sviatkov
-v B skupine ste sa odkazoval na zlý riadok výpočtu druhov smien (19 vs 20)
-vzorce v súčtoch sú manuálne vypísané, to by sa zišlo urobiť tak, aby boli vypočítavané, posúvané oblasti, aby bol vzorec naťahovateľný. Pretože pri nejakej úprave počtu a umiestnení riadkov to môže byť pracné.

Obyčajná podmienka:
=IF([@Master]="";[@Slave];[@Master])
=KDYŽ([@Master]="";[@Slave];[@Master])

?

Biely text na bielom pozadí ???

Takže netreba nič. Premýšľal som na ADO, cez ktoré sa dá relatívne rýchlo získať zoznam listov, a na tie by sa dal aplikovať SUMPRODUCT s kontrolou oblasti na výskyt (v zatvorenom zošite). Ale práve tá oblasť je problém. Možno by to šlo cez ADO zistiť. Potom by sa tie vzorce naraz zapísali do pomocných buniek a máte celkom rýchlo výsledok. Lenže toto by asi bolo skôr na PowerQuery, kde netreba riešiť oblasti, lenže treba čarovať zase s názvami stĺpcov...
Neuviedol ste ani či hľadať v celom liste alebo iba v jednom stĺpci. Ani či sú súbory a listy rovnaké alebo rôznorodé.
Nápady by boli, hneď 2, ale príliš sa mi do toho nechce. Tak snáď ste si pomohol v TC.

Ten vzorec ale nemáte správne prerobený. Namiesto bodkočiarok (středníků) musia byť v EN verzii čiarky.

Vkladajte EN verzie vzorcov a bude to fungovať. Takto pochybujem, lebo pre neho bude FormulaLocal po EN pre Vás CZ. Ale keď to budete vkladať po EN, tak to pôjde obom.

Ako je to s listami v súboroch? Je len 1 list rovnakého mena?
A v ktorom stĺpci sa má hľadať?


Strana:  1 ... « předchozí  99 100 101 102 103 104 105 106 107   další » ... 298

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