Tam som použil myslím príkaz Table.Combine, ktorý spôsobí spojenie Tabuliek pod seba s tým, že sa "zlícujú" rovnako nazvané stĺpce. A na to treba tú predprípravu názvov, ktorú Vám ale ťažko urobíme bez vzorového súboru. V Poznámkovom bloku ak si otvoríte ten XML, mohli by ste sa v ňom vyznať natoľko, aby ste vyrobil vymyslené 2 riadky dát. Nejde nám samozrejme o dáta, ale o štruktúru. Potom by bodol manuálne vyrobený požadovaný výsledok z tých 2 vymyslených riadkov dát. A snáď sa nám to poddá :)
Napr. takto?
Ten Kod sa môže v spodnej tabuľke aj opakovať?
Kod je číslo alebo znakočíslo?
Hore vypísať iba prvých 5?
Všetko píšem teraz len z brucha, bez skúšania.
"...Můj kód házel chybu..."
Myslíte ktorý?
Ten prvý práveže vyzerá priechodne...
Ten druhý hodí chybu:
-za 1. lebo je tam EN vzorec aj EN oddeľovač parametrov,
-za 2. lebo to, čo by vrátil "With" (ak by tam bol lokáln vzorec) je už FormatConditions, teda nemôžete vo FormatConditions hľadať ešte .Selection.FormatConditions(1).Interior. Daný objekt takú vlastnosť nemá.
To čo chcete dosiahnuť, teda zafarbiť všetky bunky v I:AV, ak v $I$1>$AV$1 je víkend, je práve najlepšie urobiť pomocou PF.
Druhá možnosť, sledovať makrom zmenu v bunkách $I$1>$AV$1, a vykonať manuálne vyfarbenie buniek, mi príde ako úplná zbytočnosť.
Takže tá funkcia si má vo VBA prečítať posledný list v poradí? Lebo takú funkcionalitu Excel inak nemá.
Alebo sú tie listy nazývané nejakým pravidlom? Napr. DD.MM.YYYY? Potom sa dá aj cez INDIRECT/NEPŘÍMÝ.ODKAZ vzorcom.
Samotné určenie času potom riešiť podmienkou IF/KDYŽ (v závislosti na predchádzajúcej odpovedi prípadne matica), ale Vy ste nenapísal jediné vodítko, ktorým smerom sa ubrať. Doplňte.
EDIT: Tu máte niektoré z príkladov, ako sa dá Váš dotaz vyložiť. Rôzne.
To je maticový vzorec (Array Formula), ten sa nezadáva iba ENTER ale pomocou Ctrl + Shift + ENTER.
Navyše pri presúvaní vzorca alebo jeho multiplikovaní, je vhodné nastaviť aj potrebné oblasti ako Absolútne odkazy (nie ako Relatívne). Rozdiel si určite dokážete nájsť :)
Pridávam aj pokus s pomocou PowerQuery.
Mrknite napr. na stackoverflow
Skúsil som odtiaľ túto:
Function Translate$(sText$, FromLang$, ToLang$)
Dim p1&, p2&, url$, resp$
Const DIV_RESULT$ = "<div class=""result-container"">"
Const URL_TEMPLATE$ = "https://translate.google.com/m?hl=[from]&sl=[from]&tl=[to]&ie=UTF-8&prev=_m&q="
url = URL_TEMPLATE & WorksheetFunction.EncodeURL(sText)
url = Replace(url, "[to]", ToLang)
url = Replace(url, "[from]", FromLang)
resp = WorksheetFunction.WebService(url)
p1 = InStr(resp, DIV_RESULT)
If p1 Then
p1 = p1 + Len(DIV_RESULT)
p2 = InStr(p1, resp, "</div>")
Translate = Mid$(resp, p1, p2 - p1)
End If
End Function
Tak skúste pokus numero uno
???
A ako zistíme, na ktorý deň pripadá koľko hodín?
Napr. Franta 10.-13. - 4 dni - 44 hodín - 11 hodín na deň?
Lojza má v jeden deň 8 a v druhý nenaväzujúci iba 4
Pepa 15. - 20. - 6 dní - 48 hodín - 8 hod na deň
Ako sa ten súčet hodín v stĺpci E delí na jednotlivé dátumy?
Aj tak neviem naisto, či potom dobre rozumiem...:
Sub Vymaz_B_AA()
Dim R As Long, i As Long, B(), rngBAA As Range, HLADAJ
HLADAJ = 703320
With ThisWorkbook.Worksheets("List1")
R = .Cells(Rows.Count, 2).End(xlUp).Row
B = .Cells(1, 2).Resize(R).Value2
For i = 1 To R
If B(i, 1) = HLADAJ Then
If rngBAA Is Nothing Then
Set rngBAA = .Range("B1:AA1").Offset(i - 1, 0)
Else
Set rngBAA = Union(rngBAA, .Range("B1:AA1").Offset(i - 1, 0))
End If
End If
Next i
End With
If Not rngBAA Is Nothing Then rngBAA.ClearContents
End Sub
Akurát som odoslal EDIT do príspevku. Mal som preklep v oblasti C1:AA1 vs B1:AA1.
To čo upravujete Vy, teda AB na AA, neodpovedá požiadavke, ktorú ste napísal, a to, že chcete AB hodnoty ponechať.
To .Cells(i, "AB") v kóde slúži práve na to, aby sa uložili oblasti, ktoré sa majú previesť neskôr na hodnoty. Nie zmazať ani nie ponechať vzorec. V AB je totiž vzorec, nemôžete mu zmazať zdrojové hodnoty C,B,K,AA, nezostane mu výsledok.
Dáta v stĺpci AB je možné zanechať iba za predpokladu konverzie vzorca, ktorý sa v AB nachádza na hodnotu. Teda ten výpočet bude v AB (v daných riadkoch) ďalej nefunkčný.
Sub Vymaz_B_AA()
Dim R As Long, i As Long, B(), rngCAA As Range, rngAB As Range, rng As Range, HLADAJ
HLADAJ = 703320
With ThisWorkbook.Worksheets("List1")
R = .Cells(Rows.Count, 2).End(xlUp).Row
B = .Cells(1, 2).Resize(R).Value2
For i = 1 To R
If B(i, 1) = HLADAJ Then
If rngCAA Is Nothing Then
Set rngCAA = .Range("B1:AA1").Offset(i - 1, 0)
Set rngAB = .Cells(i, "AB")
Else
Set rngCAA = Union(rngCAA, .Range("B1:AA1").Offset(i - 1, 0))
Set rngAB = Union(rngAB, .Cells(i, "AB"))
End If
End If
Next i
End With
If Not rngAB Is Nothing Then
For Each rng In rngAB.Areas
rng.Value2 = rng.Value2
Next rng
rngCAA.ClearContents
End If
End Sub
EDIT:
V oblasti som urobil preklep. Namiesto C1:AA1 má byť samozrejme B1:AA1. V prílohe aj v kóde som to opravil.
Nemám tu teraz CZ Excel, ale mne sa zdá, že do PF ako Formula1 musí ísť vo VBA lokálny vzorec.
Sub PF()
With Worksheets("Hárok1").Range("I:AV").FormatConditions.Add(Type:=xlExpression, Formula1:="=WEEKDAY(I$1;2)>5").Interior
.PatternColorIndex = 0
.Color = RGB(255, 230, 153)
End With
End Sub
A ešte ma napadá, určite myslíte I$1 a nie náhodou $I1 alebo I1 ???
PowerQuery, stačí iba Ctrl + Alt + F5, alebo Data - Obnoviť všetko, alebo pravý klik do Tbl - Obnoviť
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.