To nevadí, že názvy uzlov sú iné, v tomto prípade musí byť dodržané len to, aby bol len jeden hlavný uzlo, a pod ním X poduzlov. Ak máte záujem ešte aj o tie poduzly, tak to bude horšie. Lebo treba rekurzívnu metódu napísať, ktorá bude potom aj upravovať názvy stĺpcov podľa všetkých doterajších nadradených uzlov. Teda napr. názov stĺpca by bol "Meno.Stredné" alebo "Hodnoty.Tlak.Senzor027", a to samozrejme aj s dôsledkami, že musia byť tým pádom aj stĺpce "Meno" aj "Meno.Stredné". V druhom príklade stĺpce "Hodnoty" aj "Hodnoty.Tlak" aj "Hodnoty.Tlak.Senzor027".
Takýto univerzálny rozklad sa tu riešil tuším aj v PQ, a zdá sa mi, že sa to nedoriešilo pre plne variabilné XML.
Ale vtedy išlo zdá sa mi o zlučovanie viac xml, kde bolo potrebné porovnávať nerovnaké členenie do už rozložených stĺpcov.
Zatiaľ ten najjednoduchší variant.
Štruktúra XML je vždy rovnaká? Teda hlavný uzol "note", a pod ním vždy uzly s dátami "to", "from", "heading", "body", ... ? Teda bez ďalších vnorení poduzlov? Ak áno, tak by som to urobil rýchlym rozkladom textu, a nie importom.
Myslíte 3D vzorec? Teda ak zoberiem príklad od Jiřího, tak chcete zistiť, či sa A1 vo všetkých listoch rovná 5? Potom, keďže funkcia IF/KDYŽ nepodporuje priamo 3D odkazy, dal by sa použiť test vynásobenia čísel v A1 vo všetkých listoch a následné porovnanie s N-tou mocninou čísla 5. Prázdne A1 neberie do úvahy. Problém je, že daný súčin sa dá dosiahnuť aj inými číslami:
=IF(PRODUCT(List2:List5!A1)=5^COUNT(List2:List5!A1);1;0)
=KDYŽ(SOUČIN(List2:List5!A1)=5^POČET(List2:List5!A1);1;0)
alebo porovnať min a max v bunkách A1 v listoch. Musí byť vždy 5. Prázdne rovnako neberie do úvahy:
=IF(AND(MAX(List2:List5!A1)=5;MIN(List2:List5!A1)=5);1;0)
=KDYŽ(A(MAX(List2:List5!A1)=5;MIN(List2:List5!A1)=5);1;0)
V 3D dotaze určujete prvý a posledný názov listu v rozsahu listov.
Ak chcete čokoľvek iné, Váš popis nie je dostatočný, a je potreba popis rozšíriť a zároveň priložiť prílohu s príkladom toho čo máte, a čo má byť výsledkom.
A nejde o omyl?
- "pokusná data.xlsx" neobsahuje žiadne makro
- "note.xml" neobsahuje nič, čo by akokoľvek korešpondovalo s čímkoľvek v "pokusná data.xlsx"
=HLOOKUP(A4;List1!$A$2:$DG$3;2;FALSE)
=VVYHLEDAT(A4;List1!$A$2:$DG$3;2;NEPRAVDA)
Náhled a makro je v příloze.
Nie je možné priložiť taký súbor bez citlivých info ?
úplne z brucha, keďže nieje jasné ako majú podmienky fungovať ...
=A12+A14+I9+KDYŽ(I4=DENTÝDNE(3);A16;KDYŽ(I4=DENTÝDNE(5);A18;0))
Ten filter vypíše všetky jedinečné hodnoty, a tak som vzorcom zabezpečil, aby boli hodnoty v skrytom stĺpci B iba "Viditeľné" alebo "Neviditeľné". Po kliknutí sa reaplikuje. Vpravo hore je "Vymazať filter", a ten ukáže všetko.
Čo k tomu dodať ?...
Čo znamená "pod tlačítkom"?
Sub PodTlacitkom1()
 With ActiveSheet.Buttons(Application.Caller).TopLeftCell
 Select Case .Value
 Case 1: .Value = 2
 Case 2: MsgBox "Nazdar Fero, ako sa máš?", vbQuestion
 Case Else:
 End Select
 End With
End Sub
Sub PodTlacitkom2()
 With ActiveSheet.Buttons(Application.Caller).TopLeftCell.Offset(1, 0)
 Select Case .Value
 Case 1: .Value = 2
 Case 2: MsgBox "Nazdar Fero, ako sa máš?", vbQuestion
 Case Else:
 End Select
 End With
End Sub
Podľa úhľadného screenshotu (rovné čiary) usudzujem, že ide o PDF vytvárané ako export z nejakého SW. Teda nie o scan. V tom prípade, sa dá použiť presne také riešenie, ako ste to mal. Otvorí sa manuálne PDF, Ctrl+A, prepnúť do Excelu, kliknúť na čudlík. Makro vloží dáta do pomocného listu. Z tohto listu sa potom text spracuje makrom, ktoré musí byť špecializované na presnú formu, presné textové značky oddeľujúce dané údaje, presné kombinácie či postupnosti týchto značiek. Toto isté som už nedávno jednému pánovi robil. Nemôžem poskytnúť. Ak mi pošlete na mail PDF, možno, ale skutočne iba možno, sa na to pozriem. Nemám totiž ani čas, ani chuť, ani zdravie na veľké projekty...
To sú polia údajov. Je to rýchlejšie ako ísť bunku po bunke. Je to takto pochopiteľnejšie?
Ja to Vaše rozloženie nechápem.
1. Vždy sa to musí vpratať do 34 riadkov vrátane?
2. Medzera sa pridáva aj pred prvú položku X?
3. Súvisí s 2. - vybrané položky sa majú akoby roztiahnuť na celú výšku 34 riadkov? Teda na prvom bude položka a na poslednom bude položka?
Ukážte ako má vyzerať manuálne urobený výsledok konkrétne tohto rozloženia, a potom ešte jeden, kde budú vybrané napr. iba 2 položky. Aby som porozumel, ako presne chcete aplikovať tie medzery...
Inak toto sa dá urobiť aj vzorcom, na to makro nie je potrebné.
Pr. načítania oblasti buniek do poľa:
Sub Kontrola_hodnoty()
Dim Pole(), Riadkov As Long, i As Long, MSG As String
 With Worksheets("Hárok1")
 Riadkov = .Cells(Rows.Count, "A").End(xlUp).Row - 1
 If Riadkov = 0 Then MsgBox "Chábajú data.", vbExclamation: Exit Sub
 Pole = .Range("A2:F2").Resize(Riadkov).Value
 End With
 
 For i = 1 To Riadkov
 If Pole(i, 6) < 90 Then
 MSG = MSG & vbNewLine & Join(Array(Pole(i, 1), Pole(i, 2), Pole(i, 3), Pole(i, 4), Pole(i, 5), Pole(i, 6)), " / ")
 End If
 Next i
 
 MsgBox IIf(MSG = "", "všetko OK", "Tieto hodnoty sú pod limitom <=90" & MSG), IIf(MSG = "", vbInformation, vbCritical)
End Sub
Sub Losuj()
Dim M(), Radku As Long, Zac As Double, ML As String
 With ThisWorkbook.Worksheets("List1")
 Radku = .Cells(Rows.Count, 1).End(xlUp).Row
 ReDim M(1 To Radku, 1 To 1)
 
 Select Case Radku
 Case 1: ML = .Cells(1, 1).Value2
 Case Else: M = .Cells(1, 1).Resize(Radku).Value2
 Zac = Now() + TimeValue("00:00:05")
 
 While Now() < Zac
 ML = M(Int(Rnd() * Radku) + 1, 1)
 .Cells(3, 5).Value2 = ML
 DoEvents
 Wend
 End Select
 
 .Cells(3, 5).Value2 = ML
 End With
End Sub
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.