Len letmé zamyslenie a hneď niekoľko otázok:
- Stĺpec AG ? Teda zlúčené stĺpce do jednej bunky - teda jeden údaj ? Alebo je to 8 stĺpcov A až G,teda možných 8 hodnôt ?
- Hľadá sa prvá hodnota v A až G? Posledná ? Všetky ?
- A najdôležitejšia vec - čo potom, ak tieto dáta zapíšeme do Y? Zmažú sa z A:G ? Lebo ak tam ostanú, a znovu spustíme makro, tak sa pripíšu znovu tie isté.
- Alebo to má byť reagujúce na zmenu bunky v A:G, teda ihneď po zapísaní hodnoty sa to má prenášať do Y?
...
Priložte príklady možných situácií.
Príklad :
Sub Prenos()
Dim AG(), Y(), R As Long, i As Long, j As Integer
R = UsedRange.Rows.Count - 1
If R = 0 Then Exit Sub
If R = 1 Then ReDim Y(1 To 1, 1 To 1): Y(1, 1) = Cells(2, 25).Value Else Y = Cells(2, 25).Resize(R).Value
AG = Cells(2, 1).Resize(R, 8).Value
For i = 1 To R
For j = 1 To 8
If Not IsEmpty(AG(i, j)) Then
Y(i, 1) = Y(i, 1) & IIf(IsEmpty(Y(i, 1)), "", ",") & AG(i, j)
End If
Next j
Next i
Cells(2, 25).Resize(R).Value = Y
End Sub
Ešte som na to mrkol, a :
-"Druh spoje" - "BK1" ??? Ale taký v tabuľke nieje. Je tam "BK", "BG", "DLL". Teda cez VLOOKUP nemôžeme hľadať ani 2 ani 3 písmenné testy. Aké sú teda pre túto skupinu znakov pravidlá?
-Ak môžu a nemusia byť teda rovnako dlhé reťazce, napíšte ktoré. Potom by sa teda najskôr hľadalo slovo (oddeľovač je "-") a to by sa podľa potreby checkovalo na prvé číslo a pod. Vzorce by boli pooodstatne zložitejšie. Doplnte info o možnej dĺžke jednotlivých slov, či častí v nich.
Pr. na rýchlo (snáď som sa nepomýlil) cez VLOOKUP/SVYHLEDAT.
PS: Pozor, niektoré stĺpce s "číslami" obsahovali čísla, tie by sa nenašli v texte. buď sa bude časť textu konvertovať na číslo a hľadať číslo medzi číslami, alebo sa správne naformátuje tabuľka na text, a bude sa hľadať text. Navyše pri číslach začínajúcich na 0, by bol problém. Zmenil som na text.
mepexg napsal/a:
...žiaľ doposiaľ som nenašiel postup ako (aktualizáciu PQ) programovo otestovať aby následne mohla bežať ďalšia časť kódu, lebo VBA nečaká na PQ...
Toto by malo počkať. Či ?
Sub RefreshPQ()
Dim bBackQ As Boolean
Cells(1, 5).Value = "Refreshing"
With ThisWorkbook.Connections("Dotaz – Pokus").OLEDBConnection
bBackQ = .BackgroundQuery
.BackgroundQuery = False
.Refresh
.BackgroundQuery = bBackQ
End With
Cells(1, 5).Value = "Hotovo"
MsgBox "Refresh hotový"
End Sub
Menu Zobraziť - Normálne ?
alebo
vpravo dole vedľa lupy sú 3 čudlíky. Ten vľavo je režim "Normálny"
jefrson: Akurát som to chcel povedať, že to bude jadrová elektráreň či čo, že ide 24/7, piatok-sviatok. Bo ešte aj tie rožky sa stále nepečú
Tu máte 2 návrhy. Jedno s pomocou pomocnej tabuľky, a druhé s pomocou maticového vzorca. Obe samozrejme logicky potrebujú prvotné nastavenie počiatku, od kedy sa počíta, a aký stav na počiatku bol.
=SUM((((N6:N20="y")+(N6:N20="c"))>0)*NOT(ISERROR(SEARCH("tz";B6:B20)))*(M6:M20))/SUM((((N6:N20="y")+(N6:N20="c"))>0)*NOT(ISERROR(SEARCH("tz";B6:B20))))
=SUMA((((N6:N20="y")+(N6:N20="c"))>0)*NE(JE.CHYBHODN(HLEDAT("tz";B6:B20)))*(M6:M20))/SUMA((((N6:N20="y")+(N6:N20="c"))>0)*NE(JE.CHYBHODN(HLEDAT("tz";B6:B20))))
ale musí to ísť aj jednoduchšie ...
Ak je to pre Vás takto čitateľnejšie, tak môže byť. 152 stĺpcov nieje až tak veľa, teda rozdiel medzi skrývaním po jednom a naraz je nepatrný, ale ja by som to aj tak robil naraz
Počítam s jedným zápasom na tiket, tak ako ste to ukázal.
Príloha toho čo máte teraz, a príloha toho ako si to predstavujete (popis + vizuál), je teda kde ? Či my máme hádať čo máte, čo ste skúšal, čo nevyhovuje až pokiaľ netrafíme ? To môže byť na dlho
Cyklický index ?
Určite majú byť tie samostatné hodnoty v CQ18:CU18 ? Zmazal som ich. Alebo je počet stĺpcov nemenný?
=IFERROR(INDEX('Sheet 2'!B:B;MATCH(C1;'Sheet 2'!D:D;0));"")
=IFERROR(INDEX('Sheet 2'!B:B;POZVYHLEDAT(C1;'Sheet 2'!D:D;0));"")
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.