Excel: potřebuji makro pro porovnání dat Vyřešeno

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

Moderátor: Mods_senior

kluluk
nováček
Příspěvky: 15
Registrován: květen 10
Pohlaví: Muž
Stav:
Offline

Excel: potřebuji makro pro porovnání dat

Příspěvekod kluluk » 17 kvě 2010 11:13

Ahoj prosim o pomoc, mam problem s VBA v Excelu. Potrebuji porovnat data z jednoho listu s daty v druhem listu.
Napr. mam v prnim listu tablku kde jsou nazev, vyrobce a kusy a v druhem listu to same, akorat ze kdyz ve druhem listu bude neco identickeho nazvu, tak potrebuji odecist kusy z druheho listu od kusu z prvniho listu a mam velky problem toto zapsat pres VBA, predem dekuji za rady.
kluluk

// Změna názvu tématu. Původní název "VBA Excel" svou nulovou informační hodnotou porušoval pravidla tohoto fóra
// mike007

Reklama
Uživatelský avatar
mike007
Master Level 7.5
Master Level 7.5
Příspěvky: 5860
Registrován: srpen 07
Bydliště: Pardubice
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Excel: potřebuji makro pro porovnání dat

Příspěvekod mike007 » 17 kvě 2010 11:20

Úplně nejlepší bude když sem vložíš excelový sešit s daty, aby jsme mohli udělat makro na míru.
Nejlepší hra je Excel!
Pravidla fóra PC-helpJak označit téma za vyřešené
»»»»»»»»»»»»»»»»»»»»»»»
UPOZORNĚNÍ - můj Skype, Soukromé zprávy či email neslouží jako tech. podpora.
Dotazy pište do fóra. Od toho tu je.

kluluk
nováček
Příspěvky: 15
Registrován: květen 10
Pohlaví: Muž
Stav:
Offline

Re: Excel: potřebuji makro pro porovnání dat

Příspěvekod kluluk » 17 kvě 2010 11:36

Tady vkladam excelovy soubor, proste potrebuji hlidat kdyz to co jsem napsal v druhem listu bude odpovidat necemu co je v prvnim listu, tak aby se odecetly kusy. kusy z prvniho listu - kusy z druheho listu.
diky moc
Přílohy
Porovnani.xls
(20 KiB) Staženo 200 x

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel: potřebuji makro pro porovnání dat

Příspěvekod navstevnik » 17 kvě 2010 15:15

V priloze je mozne reseni, zapsanim hodnoty Kusu v polozce na listu2 je volana udalostni procedura, ktera vyhleda na listu1 odpovidajici polozku. Pokud je na listu1 duplicitni vyskyt polozky Nazev/Vyrobce, pak je pocet z odpovidajici polozky na listu2 odecten od prvniho vyskytu. Dale je nutna shoda nazvu a vyrobce na obou listech.
Přílohy
PorovnaniDoplneno.xls
(40 KiB) Staženo 466 x

kluluk
nováček
Příspěvky: 15
Registrován: květen 10
Pohlaví: Muž
Stav:
Offline

Re: Excel: potřebuji makro pro porovnání dat

Příspěvekod kluluk » 17 kvě 2010 18:37

Mnohokrat dekuji. :-)
Vypada to vyborne, jen bych chtel jeste poprosit, zda by bylo mozne trochu mi objasnit kod? Abych to dokazal pripadne i modifikovat o dalsi sloupce a nebo podminku, abych nepretekl do zapornych cisel.
dekuji
kluluk

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel: potřebuji makro pro porovnání dat

Příspěvekod navstevnik » 17 kvě 2010 19:04

komentovana procedura:

Kód: Vybrat vše

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
'deklarace promennych
  Dim Cll As Range, SBlk As Range, OK As Boolean
  ' omezeni rozsahu promenne target na jednu bunku pri nazani bloku bunek
  Set Target = Target.Resize(1, 1)
  ' test, zda Target je ze sloupce C:C
  If Not Intersect(Target, Me.Range("c:c")) Is Nothing Then
    ' nastavi promennou OK na hodnotu False
    OK = False
    ' nastavit blok bunek na listu1
    With Worksheets("list1")
      Set SBlk = Intersect(.UsedRange, .Range("a:a"))
    End With
    ' prohledat sloupec A:A na listu1, hledat hodnotu z list2!Axx - nazev
    With SBlk
      Set Cll = .Find(Target.Offset(0, -2).Value, LookIn:=xlValues, LookAt:=xlWhole)
      If Not Cll Is Nothing Then
        ' nalezeno ve sloupci A:A, overit zda se shoduje i Vyrobek
        If Cll.Offset(0, 1).Value = Target.Offset(0, -1).Value Then
          ' snizit hodnotu kusu na listu1, kdyz bude vysledek >=0
          If Cll.Offset(0, 2).Value - Target.Value >= 0 Then
            Cll.Offset(0, 2).Value = Cll.Offset(0, 2).Value - Target.Value
          Else
            MsgBox "Vysledny stav je <0"
            ' vynulovat vlozenou hodnotu, potlacit prepocet a volani procedur
            Application.EnableEvents = False
            Target.Value = 0
            Application.EnableEvents = True
          End If
          OK = True
        End If
      End If
    End With
    Set Cll = Nothing
    Set SBlk = Nothing
    If Not OK Then MsgBox "Nenalezeno...blabla"
  End If
End Sub

kluluk
nováček
Příspěvky: 15
Registrován: květen 10
Pohlaví: Muž
Stav:
Offline

Re: Excel: potřebuji makro pro porovnání dat

Příspěvekod kluluk » 17 kvě 2010 19:35

Parada diky moc akorat, bych jeste chtel poprosit, o pomoc kdybych si ted chtel pridat uplne na zacatek do sloupce A sloupec s nazvem identifikace. Aby to fungovalo i pro tento treti sloupec. To znamena ze to bude porovnavat identifikaci, nazev a vyrobce a kdyz budou stejne, tak to prepocita ty kusy.
Ja bohuzel jeste nepochopil ten kod na tolik abych si to dokazal uspesne modifikovat, nejak se tu s tim peru. Diky moc
kluluk

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel: potřebuji makro pro porovnání dat

Příspěvekod navstevnik » 17 kvě 2010 20:57

Identifikace - ma vyznam, pokud to je jedinecny udaj, pak postaci vyhledavat pouze podle identifikace. V tomto smyslu je upravena udalostni procedura listu 2:

Kód: Vybrat vše

Private Sub Worksheet_Change(ByVal Target As Range)
' udalostni procedura snizi stav ks v prislusnem zaznamu na list1
' deklarace promennych
  Dim Cll As Range, SBlk As Range, OK As Boolean
  ' omezeni rozsahu promenne target na jednu bunku pri mazani bloku bunek
  Set Target = Target.Resize(1, 1)
  ' test, zda Target je ze sloupce D:D
  If Not Intersect(Target, Me.Range("d:d")) Is Nothing Then
    ' nastavi promennou OK na hodnotu False
    OK = False
    ' nastavit blok bunek na listu1
    With Worksheets("list1")
      Set SBlk = Intersect(.UsedRange, .Range("a:a"))
    End With
    ' prohledat sloupec A:A na listu1, hledat hodnotu z list2!Axx - identifikace
    With SBlk
      Set Cll = .Find(Target.Offset(0, -3).Value, LookIn:=xlValues, LookAt:=xlWhole)
      If Not Cll Is Nothing Then
        ' snizit hodnotu kusu na listu1, kdyz bude vysledek >=0
        If Cll.Offset(0, 3).Value - Target.Value >= 0 Then
          Cll.Offset(0, 3).Value = Cll.Offset(0, 3).Value - Target.Value
        Else
          MsgBox "Vysledny stav je < 0, blabla..."
          ' odstranit vlozenou hodnotu kusu na listu2, potlacit prepocet a volani procedury
          Application.EnableEvents = False
          Target.Value = vbNullString
          Application.EnableEvents = True
        End If
        OK = True
      End If
    End With
    Set Cll = Nothing
    Set SBlk = Nothing
    If Not OK Then MsgBox "Nenalezeno...blabla"
  End If
End Sub

kluluk
nováček
Příspěvky: 15
Registrován: květen 10
Pohlaví: Muž
Stav:
Offline

Re: Excel: potřebuji makro pro porovnání dat

Příspěvekod kluluk » 17 kvě 2010 21:07

dobra tak identifikace neni spravny nazev, rikejme identifikaci tedy upresneni. Me jde ale o to jak si ohlidat kombinaci tri sloupcu.
dekuji

kluluk
nováček
Příspěvky: 15
Registrován: květen 10
Pohlaví: Muž
Stav:
Offline

Re: Excel: potřebuji makro pro porovnání dat

Příspěvekod kluluk » 18 kvě 2010 09:11

Omlouvam se, ze to takhle komplikuji, ale v konecne fazi jsem dosel k tomu, ze potrebuju 4 sloupce: Nazev, Upresneni, Vyrobce, Kusu.
Jestli je neco duplicitni, se musi porovnavat v ramci 3 sloupcu (Nazev, Upresneni, Vyrobce).
Predchozi kod pro porovnavani 2 sloupcu byl skvely, ale ja ho nejak nedokazu upravit na 3 sloupce.
Pomuze mi prosim nekdo?

Dekuji kluluk

navstevnik
Level 4
Level 4
Příspěvky: 1142
Registrován: srpen 08
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Excel: potřebuji makro pro porovnání dat

Příspěvekod navstevnik » 18 kvě 2010 09:32

A je to jiz opravdu definitivni? Pokud ano, tak ti to upravim.

kluluk
nováček
Příspěvky: 15
Registrován: květen 10
Pohlaví: Muž
Stav:
Offline

Re: Excel: potřebuji makro pro porovnání dat

Příspěvekod kluluk » 18 kvě 2010 09:51

Ano tentokrat uz je to definitivni.
Dekuji


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • EXCEL -jak otevřít 2 excel sobory abych je viděla současne a samostatně
    od Ketty02 » 30 srp 2024 21:19 » v Vše ostatní (sw)
    2
    4772
    od Riviera kid Zobrazit poslední příspěvek
    02 zář 2024 16:21
  • Porovnaní sestavy + kde muže být problém? Příloha(y)
    od Ribendik » 12 pro 2024 11:04 » v Rady s výběrem hw a sestavením PC
    2
    828
    od Zivan Zobrazit poslední příspěvek
    12 pro 2024 12:26
  • mpg x570 gaming edge wifi Potřebuji poradit jak na bot BIOSu Příloha(y)
    od ManemanTV » 15 pro 2024 21:31 » v Problémy s hardwarem
    11
    4252
    od ManemanTV Zobrazit poslední příspěvek
    16 pro 2024 18:18
  • Přechod z Excel 21 na Excel 24
    od Snekment » 29 led 2025 13:46 » v Kancelářské balíky
    2
    12185
    od Snekment Zobrazit poslední příspěvek
    29 led 2025 15:05
  • Pohoda a excel Příloha(y)
    od brownwld » 06 kvě 2025 17:28 » v Kancelářské balíky
    1
    4591
    od atari Zobrazit poslední příspěvek
    07 kvě 2025 09:41

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

Kdo je online

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