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ť
Možno by sa to dalo ojebabrať takto...
Toto sa vysporiada so všetkými prípadmi čo ma napadli: [HH]:MM ako text, číslo, záporné, kladné, HH:MM ako text, číslo, záporné, kladné
=IF(ISTEXT(A2);VALUE(SUBSTITUTE(A2;"-";""));A2)*IF(LEFT(A2;1)="-";-24;24)
=KDYŽ(JE.TEXT(A2);HODNOTA(DOSADIT(A2;"-";""));A2)*KDYŽ(ZLEVA(A2;1)="-";-24;24)
PS:
HH:MM a [HH]:MM nie je to isté, a tiež 18:48 a "18:48" nie je to isté. Duplom s "-".
Je to formát Text?
Napr.:
=TIMEVALUE(SUBSTITUTE(A5;"-";""))*IF(LEFT(A5;1)="-";-1;1)
=ČASHODN(DOSADIT(A5;"-";""))*KDYŽ(ZLEVA(A5;1)="-";-1;1)
V uvedenej ukážke ale nie nič o dátume/počte dní, s ktorými rátate vo vzorci.
ak sú do toho zarátané celé dni formou [HH]:MM, tak napr.:
=(DATEVALUE(SUBSTITUTE(A7;"-";""))*24+TIMEVALUE(SUBSTITUTE(A7;"-";"")))*IF(LEFT(A7;1)="-";-1;1)
=(DATUMHODN(DOSADIT(A7;"-";""))*24+ČASHODN(DOSADIT(A7;"-";"")))*KDYŽ(ZLEVA(A7;1)="-";-1;1)
alebo
=VALUE(SUBSTITUTE(A8;"-";""))*IF(LEFT(A8;1)="-";-1;1)
=HODNOTA(DOSADIT(A8;"-";""))*KDYŽ(ZLEVA(A8;1)="-";-1;1)
podľa toho, čo má byť presne výsledkom, a čo a v akom formáte reprezentuje zdroj.
Takto, keď to máte v DM, tak by Vám to malo ísť. Ak Vám ten druhý dotaz takto nefunguje, tak ho asi máte priamo do listu, a odtiaľ do KT. Lebo ak by bolo prepojenie vložené ako zdroj KT alebo dotaz načítaný do KT, tak by to nemalo byť obmedzené (ani nastaviteľné). Aspoň u mňa v E2019 to tak je.
Ako ste na tom s veľkosťou súboru, keď je to v DT?
Vyžaduje zmenu limitu:
Načítať do - Vytvoriť iba pripojenie - Načítať tieto údaje do dátového modelu. Potom už bude dotaz vidieť v Údaje - Dotazy a pripojenia - Pripojenia, dvojklik (Vlastnosti), Maximálny počet záznamov na načítanie - OK
Nevyžaduje zmenu limitu (dáva mi to všetky riadky):
Načítať do - Zostava kontingenčnej tabuľky - OK
alebo
Načítať do - Vytvoriť iba pripojenie, menu Vložiť - Vložiť KT, Použiť Externý zdroj údajov - Vybrať pripojenie - Zobraziť pripojenia v tomto zošite - vybrať - Otvoriť - OK
Bude záležať na kombinácii PQdotaz/Pripojenie/KT/DataModel.
Skúste viac popísať Vašu situáciu. Aký je presne tok dát? Máte adresár zo 100 súbormi CSV, ktoré majú také a také názvy stĺpcov, v PQ zložíte súbory dokopy, odfiltrujete abc, načítate do modelu, z neho vytvoríte KT s týmito nastavenia (stĺpce, riadky, hodnoty, filtre), vyfiltrujete xyz, zostane 20000 riadkov, a chcete si pozrieť detail súčtu?
Nenapadá ma možnosť ako toto urobiť bez makra. Ak zaškrtnete Zalomiť text, tak sa riadok prvý krát rozšíri, no už sa nezúži naspäť, ak ďalšie vyhľadávanie požaduje len úzky riadok. A v PF sa zalamovanie nastaviť nedá.
Kurňa chlape, to nemôžete napísať rovno všetko tak ako to je, a priložiť anonymizovanú prílohu? Veď nič, čo ste písal nesedí s realitou. Bunky sú úplne iné, rozsah nie je ani bunka, ako ste spomínal, ani stĺpec ako ste neskôr tvrdil, ale samostatné oddelené oblasti. Nejde o zmenu ale o výpočet, na čo Excel pozerá úplne odlišne. Takže nejaký Target a Intersect je Vám v procedúre Calculate k ničomu. Rozlišovacie stavy nie sú "Sledované", ale nejaké "SELL", "BUY", NO". Bunky nie sú vedľa seba aby sa dal použiť zápis poľa naraz ...
Ste dnes už druhý, čo ma nakrkol ...
Čo s Vami ?
Prílohu !
Oznam pomocou formulára (sám zmizne), zistí počet riadkov podľa A:A, vypíše dosiahnuté hodnoty aj limity, mená a časy. Hodnoty zapíše. Reaguje na hromadné zmeny (jednotky, menšie desiatky). Ak je treba reagovať na 100-ky až tisíce naraz, treba to prekopať na polia z prípadných zmenených Areas, a robiť rovnako zápis polí do Offset-nutých Areas. Aj tak to bude spomaľujúce. Ak sa bude jednať o kontrolu 10-ok tisíc hodnôt tak jedine na kliknutie tlačidla, lebo "za letu" to bude s požadovaným zápisom do buniek pomalé. Iné so zápisom hodnôt, časov, funkciou Štart/Stop ma nenapadá...
Myslíte toto ?
Link1, Link2
Musíte to mať ako Connection.
Ale makrom prichádzate o Undo.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B2")) Is Nothing Then
If Range("E2").Value = "Sledovanie" Then
If Range("B2").Value >= Range("C2").Value Then
Range("D2").Value = Now
Range("E2").Value = "STOP"
End If
End If
End If
If Not Intersect(Target, Range("E2")) Is Nothing Then
If Range("E2").Value = "Sledovanie" Then
If Not Range("E2").FormulaHidden Then 'Vlastnosť bunky využitá na uchovanie predchádzajúceho stavu sledovania
Range("D2").ClearContents
Range("E2").FormulaHidden = True
End If
Else
Range("E2").FormulaHidden = False
End If
End If
End Sub
Ale pozor. Takisto nebude fungovať, ak budú v dátach medzery. Treba si ujasniť, či chcete zapisovať na prvý voľný alebo za posledný zaplnený. To je rozdiel. A samozrejme, či bude použitý filter a či sa jedná o objekt Tabuľka, alebo iba obyč tabuľka, ďalej či to má hlavičku a na ktorom riadku (to u Vám má na riadku 1)...
Worksheets("Hárok1").Columns("B").Cells.Find(What:="", After:=Worksheets("Hárok1").Range("B1"), LookAt:=xlPart, LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False).Resize(, 5).Value = Array(TextBox1.Text, ComboBox1.Text, ComboBox2.Text, ComboBox3.Text, ComboBox4.Text)
ďalej je možnosť SpecialCells(xlCellTypeLastCell), a tiež ak budú napr. posledné riadky vyfiltrované vracia nesprávny výsledok.
Super. Urobil som obdobnú skúšku:
zdroj xlsx - 2,2 MB
PQ bez filtra do Tabuľky - 750 kB
PQ bez filtra iba prepojenie - 16 kB
PQ bez filtra iba prepojenie + dátový model - 557 kB
PQ s filtrom do Tabuľky - 476 kB
PQ s filtrom iba prepojenie - 16 kB
PQ s filtrom iba prepojenie + dátový model - 553 kB
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.