1. Jedná sa o rozdelenie iba hodnôt, alebo tam sú aj vzorce, podmienené formáty, farby a pod?
2. Čo ak list s farbou existuje? Prepísať? Doplniť?
3. Čo ak existujú listy s farbami, aké nie sú v tabuľke? Ponechať? Odstrániť?
A ďalej sa ani nezamýšľam...
=VLOOKUP(S6;INDIRECT("'"&A7&"'!A26:I29");2;FALSE)
=SVYHLEDAT(S6;NEPŘÍMÝ.ODKAZ("'"&A7&"'!A26:I29");2;NEPRAVDA)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bunka As Range
Set Bunka = Intersect(Columns("G"), Target)
If Not Bunka Is Nothing Then
If Bunka.Value = "splnené" Then
With Bunka.Cells(1).Offset(0, -1)
If IsEmpty(.Value) Then
Application.EnableEvents = False
.Value = Date
Application.EnableEvents = True
End If
End With
End If
End If
End Sub
1. V tom G sa to "splnené" objaví vzorcom, alebo je zadané manuálne napísaním či výberom z výberového zoznamu?
2. Môže nastať zmena viacerých buniek v G naraz?
3. Čo ak v F už dátum je?
Target.Column nemôžete testovať, ak meníte viac buniek a G je iba súčasťou. Treba to inak. Odpovedzte na upresňujúce otázky.
Urobte si dočasné odstavenie Events, napr.:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim testValue As Variant
Dim myRange As Range
Dim myChangedRNG As Range
Set myRange = Range("D8:D372")
Set myChangedRNG = Intersect(Target, myRange)
If myChangedRNG Is Nothing Then Exit Sub 'ignoruje změny mimo určený rozsah
If myChangedRNG.Cells.Count > 1 Then Exit Sub 'ignoruje změny s více než jednou buňkou
testValue = myChangedRNG.Value
If IsNumeric(testValue) Then
Application.EnableEvents = False
On Error GoTo KONIECTESTU
If testValue >= 0 And testValue < 1 Then
myChangedRNG.Value = Format(testValue, "h:mm")
ElseIf testValue >= 1 And testValue < 24 Then
If Int(testValue) = testValue Then
myChangedRNG.Value = Format(testValue, "0") & ":00"
Else
myChangedRNG.Value = Format(testValue, "h:mm")
End If
End If
KONIECTESTU:
On Error GoTo 0
Application.EnableEvents = True
End If
End Sub
Prvý nástrel, nemám viac času ...
Skúste makro
A prečo má formátovať na žlto C3 ako N, keď N je v C4?
Nejasné. Skúsme to inak. Dajme tomu, že súbor otvoríte 9.3.2023 o 19:31.
a) Ktoré bunky budú zelené (uveďte všetky)?
b) Ktoré bunky budú žlté (uveďte všetky)?
Nie, to sú 2 úplne rozdielne riešenia. V 1. liste je klasická tabuľka. V 2. liste je objekt Tabuľka (ListObject, ExcelTable,...) + Kontingenčná Tabuľka. Použite, ktoré chcete.
Skúste, či som sa nezamotal.
Pr.
Pre Excel 2019, 2021, 365:
=MAXIFS(F2:F6;F2:F6;"<"&A2;E2:E6;B2)
pre Excel 2010+
=AGGREGATE(14;4;(F2:F6<A2)*(E2:E6=B2)*F2:F6;1)
inak maticový vzorec
=LARGE(IF((F2:F6<A2)*(E2:E6=B2);F2:F6;FALSE);1)
=LARGE(KDYŽ((F2:F6<A2)*(E2:E6=B2);F2:F6;NEPRAVDA);1)
??? Ale to neskúma neustále, či ste nezmenil podmienený formát (PF). To si iba raz, na začiatku po spustení makra prečíta farby medzi ktorými je prechod. A to sa predpokladá, že dáta budú mať 1 PF, alebo ak viac, tak tento "kopírovaný" bude prvý. Potom už pre každú bunku cieľa počíta jej MIN a MAX tak, aby hodnota bunky zodpovedala podielovo tomu podielu zdroja, aby sa dosiahla rovnaká farba. Ale zdroja celkovo, nie z každej zdrojovej bunky iné PF. Nie je mysliteľné, aby sa pri každom prepočte, pri akejkoľvek zmene akejkoľvek bunky, kontrolovalo a nastavovalo takýmto spôsobom X tisíc PF iných buniek. S tým by ste pracovať nechcel.
Musíte vedieť aké farby PF bude mať ktorá oblasť, a nastaviť ich jedným spustením makra pre každú oblasť. Ale tým to hasne. Vy keď následne zmeníte zdrojové PF, tak sa to cieľa nedotkne.
A netýka sa to iných druhov PF ako farebný prechod medzi 2 farbami.
Ak chcete čokoľvek iné, musíte dodať presnú prílohu, s presným rozsahom dát (na zistenie, či to bude realizovateľné), a popisom aký formát ma byť kde.
VBA - vyberte si z toho čo potrebujete
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.