Stránka 1 z 1
Najít a nahradit v Excelu
Napsal: 03 led 2013 13:52
od ferasusa
Dobrý den. Prosím o pomoc s excelem. Mám excelový soubor obsahující cca 50 tis. řádků v 6-ti sloupcích. Potřebuji uprgradovat cca 50 různých řádků dle prvního sloupce z jiného souboru v Excelu.Portřebuji najít dle čísel v prvním sloupci řádky a tyto nahradit řádky z jiného souboru. Tohle je na mne příliš složité. Předem děkuji za pomoc.
Re: Najít a nahradit v Excelu
Napsal: 03 led 2013 18:36
od cmuch
Vítej Na PC-HELP
Ty čísla v prvním sloupci obou souborů budou jedinečná?
Podle shody se přepíšou řádky?
Re: Najít a nahradit v Excelu
Napsal: 04 led 2013 08:37
od ferasusa
Čísla budou jedinečná, jedná se o cenník, to jsem bohužel zapomněl napsat. V podstatě v prvním sloupci je číslo výrobku, v případě shody těchto čísel potřebuji prěpsat ten zbytek. Jedná se o změny cen, či popisu zboží. Děkuji...
Re: Najít a nahradit v Excelu
Napsal: 04 led 2013 18:06
od cmuch
Tady je jedno makro.
Stačí když si změníš názvy souborů a listů, popřípadě sloupce co má prohledávat (zde A v obou sešitech)
Kód: Vybrat vše
Sub Porovnej()
Dim BlkA As Range, BlkB As Range
Dim CllA As Range, CllB As Range
Dim zdrojsesit As Object, cilsesit As Object
Dim frstAddr As String
Dim shoda, radek As Integer
On Error GoTo err
' definovani bloku bunek na listech (sesit, list, oblast)
Set zdrojsesit = Workbooks("zdroj.xlsx").Worksheets(1)
Set cilsesit = Workbooks("cil.xlsm").Worksheets(1)
zdrojsesit.Activate
Set BlkA = zdrojsesit.Range(("a1:a") & Cells(Rows.Count, "a").End(xlUp).Row)
cilsesit.Activate
Set BlkB = cilsesit.Range(("a1:a") & Cells(Rows.Count, "a").End(xlUp).Row)
shoda = 0 ' pocet shod
Application.ScreenUpdating = False
' prochazet BlkA
For Each CllA In BlkA.Cells
' prohledavat BlkB
With BlkB
Set CllB = .Find(CllA.Value, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows)
If Not CllB Is Nothing Then ' pri shode porovnat sloupce
frstAddr = CllB.Address
Do
If CllA.Offset(0, 0).Value = "" Then
GoTo dalsi ' skoc na dalsi hodnotu v bloku A
End If
If CllB.Offset(0, 0).Value = CllA.Offset(0, 0).Value Then ' pri shode zkopiruj
With zdrojsesit
.Rows(CllA.Row).Copy
End With
With cilsesit
.Rows(CllB.Row).PasteSpecial
End With
Application.CutCopyMode = False
shoda = shoda + 1
GoTo dalsi ' skoc na dalsi hodnotu v bloku A
End If
Set CllB = .FindNext(CllB)
Loop While CllB.Address <> frstAddr
End If
dalsi:
End With
Next CllA
Application.ScreenUpdating = True
MsgBox " Uff, nasel jsem " & shoda & " shod.", vbInformation
' odstranit objektove promenne
Set zdrojsesit = Nothing
Set cilsesit = Nothing
Set CllB = Nothing
Set CllA = Nothing
Set BlkB = Nothing
Set BlkA = Nothing
End
err:
MsgBox " !! Neni otevřen jeden ze sešitů !! ", vbCritical
End Sub
Re: Najít a nahradit v Excelu
Napsal: 07 led 2013 05:18
od ferasusa
Jé děkuji, já jen nenapsal, že jsem makro nikdy zatím nepoužil, tak jsem asi v .... , je i na toto nějaká rada?
Jestli můžu připojit vzorek ceníku, nebo poslat názvy sesitů a listů? Omlouvám se, že jsem nenapsal, že jsem v použití maker ještě panic..
Re: Najít a nahradit v Excelu
Napsal: 07 led 2013 06:28
od cmuch
Tak napiš název souboru a listu sešitu, z kterého se to bude aktualizovat a připoj sešit, který se bude aktualizovat.
Makro Ti tam vložím, spouštět se bude třeba tlačítkem.
Jinak o makrech si přečti
tady, na pravo pak vše co začíná VBA.
Re: Najít a nahradit v Excelu
Napsal: 08 led 2013 05:44
od ferasusa
Chtěl jsem poprosit o email, jestli je to možné. Jsem lama, ani sem neumím vložit vzorek Excelu

Re: Najít a nahradit v Excelu
Napsal: 08 led 2013 06:24
od cmuch