Příspěvky uživatele


< návrat zpět

Strana:  « předchozí  1 2 3 4

A zeptám se blbě... není to vážně tím, že jsou zakázána makra? :-)
Mně se zatím nestalo, že by kvůli přesunu přestaly makra fungovat 30

Tady to máš zpracované :-)

Kdyby stačily vzorce, tak jednoduše takto

Ty hodnoty v dokumentu na siti (soubor1) se upravují dle mujdokument (cenik)

A chtěl bys to pomocí maker, nebo obyčejných funkcí?
Pomocí maker jsem něco hodně podobného právě dělal viz příspěvek vedle. Když pomocí funkcí, tak by to taky šlo :-)

Tak jsem zkoušel a zkoušel sám, inspiroval se zdejšími řešeními co jsem našel a splodil svoje makro. Funguje zatím výtečně. Prvně jsem tam měl kopírováni hodnot a poté pastespecial xlvalues. Jenze to bylo u 13000 řádků velice pomalé. Ještě budu muset vymyslet, ať to není vázané na číslo sloupce, ale ať si ho prvně vyhledá podle názvu. Ale nato se vrhnu asi až v pondělí :-)

Takže ve zkratce co makro dělá. Otevře si zdrojový dokument, vyhledává v něm hodnoty a přiřazuje je k konkrétním položkám v prvním dokumentu. Ještě porovná a když dochází ke změně, označí hodnotu žlutě. nenalezenou hodnotu označí červeně. Až vše projde, tak zdrojový dokument zavře a dá hlášku že data byla aktualizována.

Kdyby někdo zkušenější měl jakoukoliv radu co by to ještě vylepšila, tak sem s ní :-)

Sub kopiruj()
Dim i, Radek As Long
Dim ZDROJ As String
Dim CIL As String
Dim cesta As String

CIL = ActiveWorkbook.Name 'pod promennou cil ulozi jmeno

cesta = Application.GetOpenFilename 'okno k zadani cesty zdrojoveho dokumentu
If cesta = "False" Then Exit Sub 'pokud je chyba, pak ukonci makro

Workbooks.Open cesta 'otevre zdrojovy dokument
ZDROJ = ActiveWorkbook.Name 'pod promennou zdroj ulozi nazev dokumentu

Workbooks(CIL).Activate 'da do popredi dokument ktery sosa data

Workbooks(CIL).Worksheets("List1").Range("DO8:DO65000").Interior.ColorIndex = 0 'zmeni barvu vsech bunek ve menenem sloupci na bez vyplne

On Error Resume Next
For i = 8 To Workbooks(CIL).Worksheets("List1").Cells(65000, 31).End(xlUp).Row 'od jedné do začne odspodu a zastaví se na první neprázdné buňce
If Len(Workbooks(CIL).Worksheets("List1").Cells(i, 118)) > 0 Then 'jestliže najde že tam něco je na konkrétním řásku (hodnota větší než 0 bytu)
Radek = Workbooks(ZDROJ).Worksheets("List1").Range("B1:B15000").Find(what:=Workbooks(CIL).Worksheets("List1").Cells(i, 118), lookat:=xlWhole).Row 'vyhleda hodnotu v zdroji informaci (v radku 1-15000). hodnotu z cile kam se maji dohrat data
If Err.Number = "91" Then
Workbooks(CIL).Worksheets("List1").Cells(i, 119).Interior.ColorIndex = 3 'kdyz nenajde, tak zacerveni
Else 'kdyz najde...
If Workbooks(CIL).Worksheets("List1").Cells(i, 119).Value <> Workbooks(ZDROJ).Worksheets("List1").Cells(Radek, 80).Value Then 'kdyz je hodnota rozdilna od predchozi
Workbooks(CIL).Worksheets("List1").Cells(i, 119) = Workbooks(ZDROJ).Worksheets("List1").Cells(Radek, 80).Value 'tak se prepise novou
Workbooks(CIL).Worksheets("List1").Cells(i, 119).Interior.ColorIndex = 6 'a zazluti
End If
End If
End If
'Radek = 0
Err.Number = 0 'vynuluje moznou chybu z hledani
Next i
On Error GoTo 0
Workbooks(ZDROJ).Close SaveChanges:=False 'zavre zdrojovy dokument
MsgBox ("Data aktualizována") 'poda informaci...

Zdravím Vás,
měl bych na Vás myslím si, že složitější dotaz. Mám rozsáhlou tabulku, kde celkem často aktualizuji sloupec pomocí funkce svyhledat. (otevřu si druhou tabulku ze sítě, zkopíruju dva sloupce do své, pomocí funkce svyhledat potom přiřadím hodnoty, vložím jako hodnoty a zase dva sloupce smažu)

Moje představa by byla, že bych pustil v mojem dokumentu makro, to by si šáhlo do dokumentu na síti (nebo bych ho i mohl stáhnout k sobě, když by to byl problém). Tam by postupně prohledávalo dané sloupce pomocí funkce svyhledat a vkládalo nalezené hodnoty do mého dokumentu jako hodnoty (a ty co nenalezne nechalo neaktualizované).
Je něco takového možné udělat?

Přikládám pro názornost mujdokument a dokument na siti. Takže v mujdokument bych pustil makro a to by prohledávalo všechny obsazené řádky v dokumentu na síti podle ID v mojem dokumentu. Když by ID našlo, tak by hodnotu vložilo do sloupce hodnoty. Když by nenašlo nechylo by starou.

Kdybyste chtěli cokoliv upřesnit piště.
Jestli se někdo pokusí pomoci budu strašně rád :-)

Moc Vám oběma děkuji :-)
Pro popsané účely se více hodí napsat upravený vzorec svyhledat.
Hledal jsem však tuto možnost i v souvislosti k jiným potřebám a tam se uplatní zase makro.

Myslel jsem, že přehlížím nějakou banalitu jak to lze zkopírovat jen do vyfiltrovaných řádků, ale asi to není tak častá potřeba, aby byla implementována.
Každopádně děkuji moc 17

Aby to šlo pochopit přidávám soubor, kde bych potřeboval zkopírovat data ze sloupce C do sloupce B. Ale jen ve vyfiltrovaných řádcích.


Strana:  « předchozí  1 2 3 4

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Vynásobit hodnoty kurzem - Power Query

Alfan • 26.4. 7:56

Relativní cesta - zdroje Power Query

Alfan • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

elninoslov • 26.4. 7:54

Vynásobit hodnoty kurzem - Power Query

lubo • 25.4. 19:18

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 15:12

Relativní cesta - zdroje Power Query

Alfan • 25.4. 15:08

Relativní cesta - zdroje Power Query

elninoslov • 25.4. 14:21