< návrat zpět

MS Excel


Téma: Dosazení hodnoty z jiného souboru rss

Zaslal/a 2.8.2024 12:18

Zdravím, poradí někdo s funkcí která by zjistila co doplní hodnoty ze sloupce X při shodě a datumu. Sešit bude mít název dle řádku 3 a jména ve sloupci A jsou ve sloupci B na listu PRAHA.

Pro představu mám adresář pojmenován jako rok a měsíc kde bude Soubor + další soubory (přibývat dle aktuálního data) dle data ve formátu dd.mm.yyyy např 02.08.2024 a já bych potřeboval aby v tom hlavním souboru (ten bude např jako 08.2024) v tabulce se doplnili údaje. V otevřeném souboru jsou v sloupci A jména a v řádku 3 datumy a já potřebuji konkrétní jméno prohledat v souboru se konkrétním datem dle dle řádku 3 a v případě nalezení schody jména který by byl na listě s názvem PRAHA a jsou ve sloupci B tak aby mi napsal hodnotu u tohoto jména ve sloupci X. Exel 2019 CZ Snad pomůže příloha. Soubory budou ve stejném adresáři a pro ukázku je ve sloupci B co potřebuji doplnit

Příloha: zip56737_8.2024.zip (107kB, staženo 17x)
Zaslat odpověď >

#057564
Stalker
Při zdejším brouzdání sem narazil na tento dotaz, což mě navedlo na myšlenku vyzkoušet AI, konkrétně Gemini Pro 2.5
Výsledek je v příloze 1
Kód je bez úprav tak, jak ho AI vyplodila, druhým požadavkem bylo, aby se hodnoty přenášely bez nutnosti zdrojové soubory otevírat. Což splnila.
Jedinou vadou na kráse je, že ze souboru 10.08.2024 nepřenese hodnoty u prvních dvou jmen. V kódu je u proměnné vidět hodnota NULL
Když by někdo znal důvod, dejte prosím vědět Díky
Příloha: zip57564_wall.zip (411kB, staženo 7x)
citovat
#057566
Začátečník
Případně lze řešit doplněním vzorců pomocí makra.

Sub DoplnDataZeSouboru()

Dim listCil As Worksheet
Dim cesta As String, soubor As String, listCilJmeno As String
Dim vzorec As String, hodnotaNenalezeno As String
Dim radekDatum As Long, radekDataStart As Long, radekDataKonec As Long
Dim sloupecStart As Long, sloupecKonec As Long
Dim i As Long

Application.DisplayAlerts = False

Set listCil = Worksheets("List1") ' list kam se budou data ukládat
listCilJmeno = "PRAHA" ' jméno zdrojového listu

cesta = ThisWorkbook.Path ' cesta k souborům
radekDatum = 3 ' řádek s datumy (názvy souborů)
radekDataStart = 4 ' první řádek se jmény
sloupecStart = 2 ' první sloupec s datumem
hodnotaNenalezeno = "Nenalezeno" ' text v případě nenalezené shody

With listCil
radekDataKonec = .Cells(Rows.Count, "A").End(xlUp).Row ' poslední obsazený řádek
sloupecKonec = .Cells(radekDatum, Columns.Count).End(xlToLeft).Column ' poslední obsazený sloupec
End With

For i = sloupecStart To sloupecKonec
With listCil
soubor = Format(.Cells(radekDatum, i), "dd.mm.yyyy") & ".xlsx" ' jméno zdrojového souboru
vzorec = "=IFERROR(VLOOKUP(A" & radekDataStart & ",'" & cesta & "\[" & soubor & "]" & listCilJmeno & "'!$B:$Y,23,0),""" & hodnotaNenalezeno & """)" ' vzorec pro SVYHLEDAT

With .Range(.Cells(radekDataStart, i), .Cells(radekDataKonec, i))
.Formula = vzorec ' vloží vzorec
.Value = .Value ' převod na hodnoty
End With
End With
Next i

Application.DisplayAlerts = True

End Sub


Lze i doplnit o test, zda soubor existuje nebo nikoliv.

Pouhé použití s vzorcem s využitím INDIRECT (NEPŘÍMÝ.ODKAZ) vyžaduje otevřený sešit, jinak vrací chybu #ODKAZcitovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

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