Najít a nahradit v Excelu

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

ferasusa
nováček
Příspěvky: 4
Registrován: leden 13
Pohlaví: Muž
Stav:
Offline

Najít a nahradit v Excelu

Příspěvekod ferasusa » 03 led 2013 13:52

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.

Reklama
cmuch
Level 4.5
Level 4.5
Příspěvky: 1547
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: Najít a nahradit v Excelu

Příspěvekod cmuch » 03 led 2013 18:36

Vítej Na PC-HELP

Ty čísla v prvním sloupci obou souborů budou jedinečná?
Podle shody se přepíšou řádky?

ferasusa
nováček
Příspěvky: 4
Registrován: leden 13
Pohlaví: Muž
Stav:
Offline

Re: Najít a nahradit v Excelu

Příspěvekod ferasusa » 04 led 2013 08:37

Čí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...

cmuch
Level 4.5
Level 4.5
Příspěvky: 1547
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: Najít a nahradit v Excelu

Příspěvekod cmuch » 04 led 2013 18:06

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

ferasusa
nováček
Příspěvky: 4
Registrován: leden 13
Pohlaví: Muž
Stav:
Offline

Re: Najít a nahradit v Excelu

Příspěvekod ferasusa » 07 led 2013 05:18

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..

cmuch
Level 4.5
Level 4.5
Příspěvky: 1547
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: Najít a nahradit v Excelu

Příspěvekod cmuch » 07 led 2013 06:28

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.

ferasusa
nováček
Příspěvky: 4
Registrován: leden 13
Pohlaví: Muž
Stav:
Offline

Re: Najít a nahradit v Excelu

Příspěvekod ferasusa » 08 led 2013 05:44

Chtěl jsem poprosit o email, jestli je to možné. Jsem lama, ani sem neumím vložit vzorek Excelu :huh:

cmuch
Level 4.5
Level 4.5
Příspěvky: 1547
Registrován: březen 11
Bydliště: Drsná Vysočina :D
Pohlaví: Muž
Stav:
Offline

Re: Najít a nahradit v Excelu

Příspěvekod cmuch » 08 led 2013 06:24



  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Čím nahradit Meta Quest 3 router
    od showpayne » 24 úno 2025 06:31 » v Rady s výběrem hw a sestavením PC
    3
    2382
    od buchtik Zobrazit poslední příspěvek
    25 úno 2025 12:18
  • Fičura v Excelu Příloha(y)
    od Rosta_Kolmix » 27 čer 2024 17:12 » v Kancelářské balíky
    1
    3347
    od Grimm Zobrazit poslední příspěvek
    28 čer 2024 23:30
  • ComboBox v Excelu kopírování Příloha(y)
    od LukM » 19 říj 2024 14:03 » v Kancelářské balíky
    0
    2666
    od LukM Zobrazit poslední příspěvek
    19 říj 2024 14:03
  • automaticke nastaveni velikosti komentare v Excelu
    od Mikik Block » 04 zář 2024 15:17 » v Kancelářské balíky
    0
    3198
    od Mikik Block Zobrazit poslední příspěvek
    04 zář 2024 15:17

Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti