Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  7 8 9 10 11 12 13 14 15   další » ... 295

No musíme začať asi od znovu, čo vieme (sa domnievame), ďalej otázkami a odpoveďami.

1. ako zdroj potrebujete pre rôzne PQ dotazy
a) aj celú cestu k aktuálnemu súboru, v ktorom ten PQ dotaz je (napr. na získanie dát, ktoré nie sú Tabuľka)
b) aj cestu k adresáru aktuálneho súboru, v ktorom ten PQ dotaz je (napr. na získanie cesty podadresára umiestneného v adresári spolu s týmto súborom)

2. potrebujete načítať dáta z viacerých súborov v tom podadresári, a spojiť načítané dáta do jednej Tabuľky

3. súbory v podadresári sú XLSX, no môže sa stať, že budú aj XLS

4. údaje v súboroch v podadresári sú netabuľky (obyčajné dáta)

5. nie je možné sa spoliehať na to, že údaje načítate z 1. listu, lebo PQ Vám nedá zoznam listov v takom poradí, ako máte v Exceli.

Otázky:
6. Názov listu v súboroch v podadresári je vždy rovnaký?

7. Poznáte názov toho listu?

8. Ak nepoznáte názov toho listu, viete ho nejako od iných listov identifikovať? Nemusíte tam nič do súborov dopisovať. Veď je nejako predsa odlíšiteľný od ostatných listov. Napr. má vždy v bunke A1 napísané "Report" alebo "Výdaje" ..., pričom v iných listoch v súbore je vždy v bunke A1 niečo iné (napr. prázdna, "Jméno", "Souhrnná tabulka", ...).

9. Názvy stĺpcov sú rovnaké?

10. Dáta majú hlavičku v 1. riadku, alebo je nejaký offset (pevný, variabilný - ako ho identifikovať ?{napr. hlavička začína od riadku kde v stĺpci A je "Jméno"}), alebo nemajú hlavičku?

11. Ak neplatí bod 2. tak: Vyššie ste spomínal "první soubor", tým myslíte nájsť najnovší súbor v danom podadresári podľa dátumu modifikácie?

Môžete použiť aj Evaluate
Sub tlačítko4_Kliknutí()
Dim Jmeno As String, R As Long
R = Selection.Row
If R > 1 Then
Jmeno = Cells(R, 1).Value2
If LenB(Jmeno) > 0 Then
R = Evaluate("=IFERROR(MATCH(1,('List1'!B1:B10000=""" & Jmeno & """)*('List1'!A1:A10000=""ICA""),0),0)")
If R = 0 Then MsgBox "Nenalezeno", vbExclamation: Exit Sub
Application.GoTo List1.Rows(R), True
End If
End If
End Sub

alebo cyklus
Sub tlačítko4_Kliknutí()
Dim L(), Jmeno As String, R As Long, i As Long
R = Selection.Row
If R > 1 Then
Jmeno = Cells(R, 1).Value2
If LenB(Jmeno) > 0 Then
L = List1.UsedRange.Columns(1).Resize(, 2).Value2
R = 0
For i = 1 To UBound(L, 1)
If L(i, 1) = "ICA" And L(i, 2) = Jmeno Then R = i: Exit For
Next i
If R = 0 Then MsgBox "Nenalezeno", vbExclamation: Exit Sub
Application.GoTo List1.Rows(R), True
End If
End If
End Sub

Medzitým, ako ste sem napísali, som urobil návrh na XLS s použitím nejakého identifikátoru v liste o ktorý ide. Môže to byť hocičo niekde v liste v bunke napr. "Report", alebo názov mesiaca, alebo niečo ... tu je to "X". Už to sem dám, keď to mám hotové. Ak je u Vás ten list takto identifikovateľný, pridám potom aj na XLSX.

xls nie je to isté ako xlsx
S xls bude problém, že musíte vedieť názov listu, lebo ich názvy nevráti v poradí ako sú v zošite.

Vyskúšajte si to aktivovaním/deaktivovaním (zrušením/pridaním "//") jedného alebo druhého riadku
#"Data príklad"

Dosť dobre nerozumiem, na čo sa pýtate. Pár príkladov, ako :
- načítať dáta zo súboru v ktorom PQ je, adresár si zistí sám v bunke (2 spôsoby aj tabuľka aj Tabuľka)
- načítať dáta zo všetkých súborov v podadresári cesty v ktorej je PQ, to si zistí tiež z bunky (2 spôsoby aj tabuľka aj Tabuľka), z konkrétneho listu (dá sa aj všetky listy)

Ak sa pýtate na niečo iné, špecifikujte.

Musí to fungovať. Bežne to používam. Lubo Vám minule písal, aby ste použil aj druhý parameter funkcie CELL/POLÍČKO, teda odkaz na nejakú bunku, je fuk akú, ale v danom súbore. Ak ešte len vytvárate nový súbor, musíte ho najskôr prvý krát uložiť, aby získal cestu.

Jediné, čo nemám vyskúšané, a kde by mohol byť problém, je cesta do OneDrive a SharePoint.

Včera som si to pozrel, no a že ... fúúú to bude na dlho. Budem musieť veľmi zapojiť fantáziu, aby som dal dokopy vôbec kopec otázok, aby som aspoň trochu z odpovedí pochopil, čo ste chcel asi dosiahnuť, a prečo ste to alebo ono riešil tak či onak. A či je možné zmeniť logiku. Je to celé poprepletané medzi listami, duplicitné, triplicitné výpočty, zbytočná (?) KT, zdrojové dáta asi importované z nejakých výstupov (CSV, TXT a pod), následne zle upravované, veci sa nemusia neustále vypisovať do listov, aby sa prečítali, veď to sa dá (asi, ešte som to nepobral) dopočítať a rozdeliť makrom rovno, dvojitá hlavička (?), kopíruje sa "Začátek zápisu" no uvidíme.
Ako vravím, už len správne sa popýtať potrvá.

Divný dotaz.
Môže byť 1 pred 1000?
Môže byť viac x 1000?
Môže byť viac x 1000 bez 1 medzi nimi?
...
zatiaľ napr. pre E2021/2024/365
=LET(FLTDEN;FILTER(B3:C34;A3:A34=D1);VLOOKUP(F1;FLTDEN;2;0)-VLOOKUP(E1;FLTDEN;2;0))
=LET(FLTDEN;FILTER(B3:C34;A3:A34=D1);SVYHLEDAT(F1;FLTDEN;2;0)-SVYHLEDAT(E1;FLTDEN;2;0))

neviem či má LET a FILTER nejaký CZ preklad.

Na mobile som videl poobede, že ste dal prílohu, no keď som sa teraz konečne dostal pred spaním k PC, už tu nie je.
Každopádne, to Vaše makro nie je dobre napísané, je pomalé, nevhodne maže po jednom riadku, neprestajne sa zbytočne prepína medzi listami a selektuje bunky. Neviem, čo je účelom, ale na 99% by to šlo efektívnejšie.

Príklad:
Sub UlozTXT()
Dim D(), r As Long, T As String

With Worksheets("Upraveny").ListObjects("Upraveny__2").DataBodyRange.Columns(1)
r = .Rows.Count
If .Rows.Count = 1 Then
T = .Value2
Else
D = .Value2
For r = 1 To UBound(D, 1)
T = T & IIf(r > 1, vbNewLine, "") & D(r, 1)
Next r
End If
End With

With CreateObject("ADODB.Stream")
.Type = 2
.Charset = "utf-16"
.Open
.WriteText T
.SaveToFile ThisWorkbook.Path & "\Upraveny.TXT", 2
.Close
End With
End Sub

Pôjde ešte o to, aký formát kódovania zožerie cieľový SW/HW. Treba vyskúšať alebo pozrieť dokumentáciu.

Obsahujú tie texty diakritiku?

Musíte priložiť prílohu. Tých dôvodov je milión, vypisovať ich nebudem. BackEnginering v tomto prípade nefunguje.
Ponechajte všetky formáty, rozloženie, odsadenie, typy (tabuľka vs Tabuľka), vzorce, rozsahy, ale nechajte tam iba 3-5 riadkov anonymizovaných dát.
Dodatočné otázky položím až potom.

Priložte prílohu a čo je cieľom makra. To makro je, ... ehm ... zle napísané. Samý Select a Copy. Treba to prerobiť.

@lubo opäť excel-entne.

Ten nový Office má kopu neznámych (mne) nových featur. Táto sa volá v SK/EN verzii WRAPCOLS()

V novom Office to urobíte ľahko aj vzorcom:
=INDEX(B2:B55;TRANSPOSE(SEQUENCE(9;6)))
=INDEX(B2:B55;TRANSPOZICE(SEQUENCE(9;6)))

Makro napríklad:
Sub Rozdel()
Dim D(), V(), r As Long, s As Long, i As Long

With Worksheets("Data")
D = .Range("B2:B55").Value2
ReDim V(1 To 6, 1 To WorksheetFunction.RoundUp(UBound(D, 1) / 6, 0))
s = 1

For i = 1 To UBound(D, 1)
r = r + 1
If r = 7 Then s = s + 1: r = 1
V(r, s) = D(i, 1)
Next i

.Range("H2").Resize(6, UBound(V, 2)).Value2 = V
End With
End Sub


Strana:  1 ... « předchozí  7 8 9 10 11 12 13 14 15   další » ... 295

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