< návrat zpět

MS Excel


Téma: Copy/Paste mezi soubory po splnění podmínky rss

Zaslal/a 29.5.2014 14:45

Zdravím,

myslel jsem, že bych to mohl dokázat napsat sám, ale narazil jsem na nejeden problém, které nejsem schopen vyřešit. Proto se obracím na vás a žádám o pomoc.

Ve stručnosti:
Mám zdrojový soubor (Zdroj) a cílový soubor (Cíl). V Cíli jsou data jako sériové číslo, název, datum prodeje,... Ve Zdroji jsou data stejná, akorát datum prodeje chybí. Potřebuji napsat makro, které zkopíruje datum prodeje ze Zdroje a vloží do Cíle do správného řádku (dle sériového čísla).

Další věc je, že zdrojových souborů mám víc a rád bych jednoduchou úpravou změnil název zdrojového souboru, sloupce apod. Potřebuji to udělat jednorázově z mnoha souborů, které mají velké množství dat.

Na příkladě (viz příloha):
Potřebuji makro v Cil.xls, které se podívá do Zdroj.xls na sloupec A (sériové číslo), ze kterého postupně zkontroluje každou buňku v něm. Pokud bude platit, že se buňka rovná některé z buňek v Cil.xls ve sloupci B (sériové číslo), potom zkopíruje datum prodeje (Zdroj.xls ve sloupci C) a vloží do Cíl.xls do sloupce A k položce, která odpovídá tomu seriovému číslu. Pokud to platit nebude, označí ten řádek výraznou barvou a skočí na další buňku.

Snad je to pochopitelné. Vcelku je to jednoduché, ale asi nejsem moc dobrý na vysvětlování 3

Opravdu bych byl vděčný za pomoc. Nevím si rady.

Děkuji.

Zaslat odpověď >

#019758
avatar
Btw vše potřebuji aby bylo funkční v Excelu 2003.citovat
#019761
avatar
prilohu by to chcelocitovat
#019766
avatar
Oops, chybička se vloudila. Díky
Příloha: zip19766_priklad.zip (4kB, staženo 19x)
citovat
#019769
avatar
- ale co s takymi udajmi co nenajde??

skuste toto:
Příloha: zip19769_test.zip (23kB, staženo 19x)
citovat
#019774
avatar
Hází mi to chybu "Subscript out of Range" a úplně se v tom tvým makru neorientuju, takže ani nedokážu najít v čem je chyba. To už je na mě moc profi :/ Vůbec se neorientuju v těch cyklech. :( S těmi položkami, které nenajde, by bylo nejlepší je označit třeba červeně. To bych si pak vyfiltroval a přidal.citovat
#019775
avatar
Já jsem měl v hlavě řešení, že tam dám něco ve smyslu SrcFile = "abc.xls"
DestFile = "123.xls"
SrcRng = SrcFile.Range("C:C")
DestRng = DestFile.Range("A:A")

Tahle část už mi taky trochu habrovala - takhle to asi moc napsat nejde :/

A pak něco jako
For x In SrcRng
no a tady už nevim jak bych to měl napsat
nějaký to if, else, ale vždycky mi to pak hlásí nějaký chyby. Ať už syntaxe, object required apod. vždycky vyřešim jednu hlášku a je tam jiná :/

Ale chtěl bych tam na začátku něco jako ten SourceFile, SourceRange, abych to pak mohl jednoduše přepsat a přehodit na jiný soubor, list, sloupec...citovat
icon #019776
avatar
Tahle část už mi taky trochu habrovala - takhle to asi moc napsat nejde :/ No to naozaj nejde. Priradenie hodnoty objektovej premennej sa totiž deje prostredníctvom inštrukcie Set, čiže:
Set SrcFile = Workbooks("abc.xls")
Set DestFile = Workbooks("123.xls")
Set SrcRng = SrcFile.Sheet1.Range("C:C")
Set DestRng = DestFile.Sheet1.Range("A:A")

Cyklus For-Next je možné písať napr. v tvare

For each x In SrcRng
..
Next x

Pokiaľ to píšeš s chybami, niet divu, že ti to nefunguje - budeš sa musieť doučiť syntax jazyka.

Mimochodom, ten kód od Palaa je funkčný, jediná vec, ktorá v ňom nie je zapracovaná, je to zvýrazňovanie nových položiek; to by sa dalo dorobiť v tej subrutine aUpload v časti If Not aRow Is Nothing, za ktorú je treba dopísať ešte časť Else. Ale je to dietko kolegu Palaa, tak to nechám na ňom. Inak skutočne klobúk dolu pred Paloom, je obdivuhodné, čo všetko v danej kvalite a objeme pre vás zadarmo tvorí...citovat
#019782
avatar

Horstorm napsal/a:

Hází mi to chybu "Subscript out of Range" a úplně se v tom tvým makru neorientuju, takže ani nedokážu najít v čem je chyba. To už je na mě moc profi :/ Vůbec se neorientuju v těch cyklech. :( S těmi položkami, které nenajde, by bylo nejlepší je označit třeba červeně. To bych si pak vyfiltroval a přidal.


spustite debugger a pri akom prikaze to vyhodi??

je dost mozne ze som mal aj napisat ako to presne funguje :))

subory ktore chcete doplnat do Data musite nahrat do adresara "Data" tam si ich makro LoadNameXLSM nacita a potom ich postupne cykly

vyhladavanie funguje s prikazom Sheets(1).Columns(1).Find(What:=W.Sheets(1).Cells(y, 1), LookIn:=xlValues, LookAt:=xlWhole)

a nakoniec to len doplni do tabulky + tam dava nazov tabulkycitovat

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