< návrat zpět

MS Excel


Téma: makro, vyhledání určité hodnoty v jinem excelu rss

Zaslal/a 21.7.2015 16:09

Dobrý den. Potřeboval bych poradit. Potřebuji poradit.
Problem.
Potřebuji vyhledat v adresáři excelovský soubor který ve sloupci C5:C19 obsahuje číslo/ hodnotu z A1 v aktuálním otevřeném excelu a poté zapíše z toho souboru ve kterém najde shodu hodnotu z buňky F2 v tom adresáři ve kterém našel shodu . Zřejmě to bude potřeba rozdělit na dvě funce první najít jméno souboru ve kterém je obsaženo číslo , a druhá z daného souboru vypsat hodnotu buňky f2.
Děkuji za odpověď.

Zaslat odpověď >

Strana:  1 2 3 4   další »
#025920
avatar
Ještě dodám že umístění souborů kde jsou excely je na f:\CrossOrg\MC_development\BOM-zaloha\3D_modely_2015\
a přípona je bud .xls nebo .xlsxcitovat
icon #025925
avatar
Asi by si mal vziať do úvahy, že excel súbory môžu mať i viac, než jeden list, teda v prípade, kedy preferuješ slovný popis zadania pred uverejnením tajných príloh 7.citovat
#025929
avatar
Tyto soubory mají dva listy ale na tom na kterém se má hledat tak ten se vždy jmenuje BOM. Přílohy tajné nejsou 2citovat
icon #025930
avatar
O.k., možný postup:
1. Pomocou funkcie dir testovať v cykle existenciu súborov (.xls alebo .xlsx) v danom adresári
2. Vo vnútri cyklu:
súbor otvoriť, testnúť existenciu listu BOM
pomocou funkcie countif vyhodnotiť prítomnosť hľadaného reťazca v oblasti c5:c19
pokiaľ je hľadaný reťazec prítomný, zapísať hodnotu bunky F2 (neuvádzaš, kam sa má hodnota zapisovať, takže to popisujem schematicky, súbory fakt tvoriť nebudem), súbor zavrieť a vyskočiť z cyklu (viď. bod 1)
3. pokiaľ podmienka z bodu 2 nie je splnená, zavrieť príslušný súbor a pokračovať v cykle (bod 1) spracovaním ďalšieho súboru.citovat
#025931
avatar
Hodnoty by se měli zapisovat do sloupce E, a je možné že bude více souborů splňovat tuto podmínku a potřeboval bych je vypsat všechny.mám zde už funkci která vyhledává číslo ve jménech v adresářích.citovat
#025932
avatar
Nejde mi vložit soubor protože má 320kb. tady mám jen vyhledání čísla v adresáři. tlačítko 4 by mělo vyhledat v souboru dané číslo.
Sub tlačítko3_Kliknutí()
Dim f As String
Dim Cesta As String
Dim i As Integer
Dim a As String

Cesta = "f:\CrossOrg\MC_development\BOM-zaloha\3D_modely_2015\" 'Cesta musí končit znakem '\'
a = Cells(3, 4)
ChDir Cesta
f = Dir(Cesta & a & " *.xls*")
i = 3
While f <> ""
Cells(i, 5) = f
i = i + 1
f = Dir()
Wend
Cesta = "F:\CrossOrg\MC_development\BOM-zaloha\" 'Cesta musí končit znakem '\'
a = Cells(6, 4)
ChDir Cesta
f = Dir(Cesta & a & " *.xls")
i = 6
While f <> ""
Cells(i, 5) = f
i = i + 1
f = Dir()
Wend
End Sub
Sub tlačítko4_Kliknutí()

ChDir way
c = Dir
Find b, way

End Subcitovat
#025933
elninoslov
Ja som Vám urobil riešenie na inom princípe.
Zadajte do bunky A1 v zošite Hľadaj.xlsm, čo sa má hľadať, a v E Vám vypíše hodnoty buniek F2 zo zošitou, v ktorých sa vyhľadávaná hodnota nachádza v rozsahu C5:C19 na liste BOM. Tak ako ste chcel.
Len si v makre najskôr zmente
Cesta = "z:\Hľadaj v zošitoch\"
na Vašu cestu (s koncovým lomítkom)
Teraz je to urobené tak, že sa spustí hľadanie pri zmene v bunke A1, ale lepšie by bolo asi toto makro priradiť tlačítku. To si už snáď dorobíte.
Příloha: rar25933_hladajvzositoch.rar (38kB, staženo 22x)
citovat
#025936
elninoslov
Ešte ma napadlo upraviť to tak, aby sa nepoužíval pomocný skrytý list. A pridal som Vám aj to tlačítko. Takže si vyberte, či tlačítko alebo zmena v bunke má vyvolať hľadanie. Ak tlačítko, tak zmažte procedúru Worksheet_Change v makre.
Příloha: rar25936_hladaj.rar (20kB, staženo 18x)
citovat
#025939
avatar
Děkuji moc za pomoc zkoušel jsem to a píše mi to chybu 9. Možná je to tím že hledám číslo a ne slovo. Je to možné. po smazání obrázků se mi podařilo to sem uložit. Můžete se na to prosím podívat??

Děkuji
Příloha: zip25939_knihovna-konstrukci_2.zip (28kB, staženo 17x)
citovat
#025941
elninoslov
No ale to je zásadne iné, ako to čo ste popisoval !
Ktorá hodnota sa má hľadať ? Tá čo je v stĺpci D ?
Ak je to tak ako si myslím, tak potrebujete nájsť číslo 6145709 (D3), a prípadné nálezy vypísať do E3:E5 (len 3 riadky, alebo ak sa jedná o E3:E8 tak 6 riadkov). Čo ak bude treba viac riadkov ?
Ten prepočet spustí napr tlačítko "Najdi BOM", ale ako makru určíte, ktorý riadok (ktoré číslo) sa má hľadať, a na ktoré bunky sa má zapisovať ?
Ak tlačítkom, tak by musel každý trojriadok (šesťriadok) mať svoje tlačidlo, alebo by jedno tlačidlo spustilo prepočet všetkých trojriadkov/šesťriadkov v liste Figur.
Ak cez OnChange (zmena v bunke), tak to môže byť pri zmene bunky a veľkom počte prehľadávaných súborov (rádovo 100-ky) pomalé.
Musíte to značne, ale naozaj značne upresniť, čo presne chcete meniť, aký a kde očakávate výsledok, čo v prípade prekročenia rozsahov, o aký počet súborov sa jedná, ako chcete spúšťať prepočet, chcete vypisovať niekde aj názov zošitu v ktorom sa našla zmena, to je obrovské množstvo otázok, na ktoré ste nemyslel.
Ste na ťahu... 1

EDIT:
A ešte pozerám, že ste si nezmenil ani názvy listov na korektné
Hodnoty(UBound(Hodnoty)) = "=IF(ISERROR(MATCH(Figur!$A$1,'" & Cesta & "[" & Subor & "]BOM'!$C$5:$C$19,0)),"""",'" & Cesta & "[" & Subor & "]BOM'!$F$2)"
ani cestu na korektnú v
Cesta = "z:\Hľadaj v zošitoch\"
Navyše ste kód skopírovali do modulu, ale on nebol v module ale ako makro konkrétneho listu.citovat

Strana:  1 2 3 4   další »

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