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 192 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 458 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
  • Porovnání technologie TV
    od Faster1 » 04 zář 2023 06:01 » v Vše ostatní (hw)
    6
    1971
    od Faster1 Zobrazit poslední příspěvek
    08 zář 2023 16:27
  • Porovnání hodnot ve sloupci Příloha(y)
    od luko02420 » 02 srp 2023 14:12 » v Kancelářské balíky
    0
    1697
    od luko02420 Zobrazit poslední příspěvek
    02 srp 2023 14:12
  • Potřebuji sestavit na czc herní pc do 25.000,-
    od DannyXXGr » 17 bře 2024 17:10 » v Rady s výběrem hw a sestavením PC
    4
    718
    od meda2016 Zobrazit poslední příspěvek
    18 bře 2024 08:07
  • Makro pro myš Rapture Python
    od mmmartin » 27 srp 2023 15:18 » v Problémy s hardwarem
    9
    1181
    od mmmartin Zobrazit poslední příspěvek
    29 srp 2023 16:47
  • Potřebuji ikonu, aby byla stále zobrazena
    od Minapark » 14 dub 2024 12:32 » v Windows 11, 10, 8...
    8
    1616
    od Minapark Zobrazit poslední příspěvek
    17 dub 2024 07:52

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

Kdo je online

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