Makro ani netreba. Tu sú príklady na vzorec aj makro. Ostatné makrá som neriešil.
Samozrejme, len sa budete odkazovať na oblasť. Ktorá Tabuľka má byť teda tabuľka? Zdroj, ciel, obidve?, ktorý stĺpec rozhoduje o počte riadkov. Vo Vašom príklade má najviac riadkov 6. stĺpec, ale to asi tak nebude. Bude to prvý? Alebo sa môže brať v úvahu celá použitá časť listu ? (teda niesú žiadne iné údaje pod tabuľkou ani vedľa nej).
EDIT:
Tu máte ten najjednoduchší spôsob s použitím UsedRange, keď nieje ani jedna Tabuľka.
A čo keby ste použil na načítanie dát zo zatvoreného listu PQ? 2 príklady.
Neviem, ako to presne myslíte, ale napadajú ma hneď 2 varianty výsledkov...
JoKe: Vy ste to pochopil? A že vraj ja mám krištáľovú guľu.
Imh0tep: Vy chcete kopírovať ľubovoľne voliteľné listy? Na to predsa musíte mať pre každý list zatržítko.
Alebo chcete presunúť/kopírovať listy napr. staršie ako 3 mesiace? Tam sa dá použiť cyklus, ktorý pripraví pole, ktoré následne použijete, ako popísal JoKe. Určite, to nemusíte vypodmienkovávať. Lepšie to popíšte.
Ak sa pozriete sem, tak sa dočítate, že prehľadávané údaje musia byť zoradené vzostupne alebo údaje typu True/False, a funkcia vráti najvyššiu hodnotu vektora (2.param, podmienka), ktorá je <= hľadanej. Testovacia podmienka dá True/False (teda 1/0). Odstránime nevyhovujúce tak, že číslo 1 vydelíme práve týmito 1/0. Nulou sa deliť nesmie, takže tam vzniknú chyby, a ostanú jedničky. My hľadáme akože číslo 2. A keďže sú tie 1 akože zoradené vzostupne, vráti nám funkcia najvyšší "index" hodnoty <= hodnote 2. A to je posledná jednička. A keď máme index tak priradíme riadok (posledný param)
normálny vzorec číslo riadku
=IFERROR(LOOKUP(2;1/($A$3:$A$13=E8);ROW($A$3:$A$13));0)
=IFERROR(VYHLEDAT(2;1/($A$3:$A$13=E8);ŘÁDEK($A$3:$A$13));0)
normálny vzorec index
=IFERROR(LOOKUP(2;1/($A$3:$A$13=E8);ROW($A$3:$A$13)-2);0)
=IFERROR(VYHLEDAT(2;1/($A$3:$A$13=E8);ŘÁDEK($A$3:$A$13)-2);0)
maticovo číslo riadku (Ctrl+Shift+Enter)
=MAX(($A$3:$A$13=E8)*(ROW($A$3:$A$13)))
=MAX(($A$3:$A$13=E8)*(ŘÁDEK($A$3:$A$13)))
maticovo index (Ctrl+Shift+Enter)
=MAX(($A$3:$A$13=E8)*(ROW($A$3:$A$13)-2))
=MAX(($A$3:$A$13=E8)*(ŘÁDEK($A$3:$A$13)-2))
A čo to má presne vracať? Toto Vám vráti číslo riadku:
=LOOKUP(2;1/NOT(ISBLANK(A2:A10)*ISBLANK(B2:B10)*ISBLANK(C2:C10));ROW(A2:A10))
=VYHLEDAT(2;1/NE(JE.PRÁZDNÉ(A2:A10)*JE.PRÁZDNÉ(B2:B10)*JE.PRÁZDNÉ(C2:C10));ŘÁDEK(A2:A10))
milos85: Takto ???
A čo to skúsiť pomocou PF?
Príloha nič neobsahuje. Veľkosť 22 bytov.
Pr.
Sub Pocet_stran()
Dim xStr As String, xFdItem As String, xFileName As String
Dim xFileNum As Long, Count As Long
Dim RegExp As Object, FSO As Object, File As Object
Dim F()
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show <> -1 Then MsgBox "Nevybrali ste žiadny adresár": Exit Sub
xFdItem = .SelectedItems(1) & IIf(Right$(.SelectedItems(1), 1) = Application.PathSeparator, "", Application.PathSeparator)
End With
wsOld.UsedRange.ClearContents
With wsCiel.Range("A1:C1").Resize(wsCiel.Cells(Rows.Count, 1).End(xlUp).Row)
wsOld.Range("A1:C1").Resize(.Rows.Count).Value = .Value
.Offset(1, 0).ClearContents
End With
Set FSO = CreateObject("Scripting.FileSystemObject")
Set RegExp = CreateObject("VBscript.RegExp")
With FSO.GetFolder(xFdItem)
For Each File In .Files
xFileName = File.Name
If LCase(FSO.GetExtensionName(xFileName)) = "pdf" Then
Count = Count + 1
ReDim Preserve F(1 To 3, 1 To Count)
F(1, Count) = xFileName
F(3, Count) = File.DateLastModified
With RegExp
.Global = True
.Pattern = "/Type\s*/Page"
xFileNum = FreeFile
Open (xFdItem & xFileName) For Binary As #xFileNum
xStr = Space(LOF(xFileNum))
Get #xFileNum, , xStr
Close #xFileNum
F(2, Count) = .Execute(xStr).Count
End With
End If
Next File
End With
If Count > 0 Then
wsCiel.Range("A2:C2").Resize(Count).Value = Application.Transpose(F)
wsCiel.Columns("A:C").AutoFit
Else
MsgBox "Žiadne súbory PDF"
End If
Set FSO = Nothing: Set RegExp = Nothing: Set File = Nothing
End Sub
Pr.
milos85 : COUNTIF() s parametrom čo sme teraz získali &"?" prípadne &"*"
Barth : Kedysi som robil vzorce na vyťahovanie čísel z akýchkoľvek reťazcov, nemôžem to nájsť. Uveďte príklad, možno poriešime ...
Aha, no však dá sa aj tak samozrejme.
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.