Makro - porovnat, pokud ano prepis

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

Moderátor: Mods_senior

Hawkey
nováček
Příspěvky: 12
Registrován: červen 10
Pohlaví: Muž
Stav:
Offline

Makro - porovnat, pokud ano prepis

Příspěvekod Hawkey » 09 zář 2010 10:23

Zdravím,
mám opět problémy s makrem. Bojoval jsem s tím sám, ale prostě na makra asi nemám hlavu... Potřebuji makro, kde bude na listu Sheet1 sloupce A s ID čísly a sloupec C s hodnotou (číselná ale i charová) a na listu Sheet2 bude ve sloupci A také ID(budou všechny ze Sheet1, ale jenom některé, kterým se změnila právě hodnota) a s novými hodnotami ve sloupci C. Makro má vždy vzít ID z buňky A ze sešitu Sheet2, najít stejné v Sheet1 a přepsat hodnotu sloupce C sešitu Sheet1 hodnotou ze sešitu Sheet2.
Zkouším si udělat menší tabulkový systém ale tohle nějak nedokážu udělat, pokud by mi tady někdo pomohl nebo poradil jak na to budu velmi rád a ještě radši když tam k tomu občas vloží komentář abych to nemusel jen tupě okopírovat, ale abych aspoň viděl tu logiku a příště už nemusel otravovat.
Předem moc děkuju.

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

Re: Makro - porovnat, pokud ano prepis

Příspěvekod navstevnik » 09 zář 2010 10:55

A co takhle prilozit demo soubor.

Hawkey
nováček
Příspěvky: 12
Registrován: červen 10
Pohlaví: Muž
Stav:
Offline

Re: Makro - porovnat, pokud ano prepis

Příspěvekod Hawkey » 09 zář 2010 11:05

Tady to je...V Sheet1 jsou to sloupce A a W, protoze pak v realu se to bude menit prave v toomhle sloupci. A měnit se tedy mají hodnoty v Sheet1 podle Sheet2. Přiložil jsem menší demo tabulku s ID osob a jejich hodnocením.
A děkuju už teď za zájem.
Přílohy
ukazka.xlsx
(8.6 KiB) Staženo 25 x

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

Re: Makro - porovnat, pokud ano prepis

Příspěvekod navstevnik » 09 zář 2010 13:31

V editoru VBA (Alt+F11) do standardniho modulu vloz nize uvedenou proceduru (prikladove reseni vztahujici se k ukazka.xlsx; definuje bloky, prochazi list Sheet1 a hleda na listu Sheet2, vlozi na Sheet1 nove hodnoty). Volani procedury vyplyne z celeho konceptu, proceduru pripadne uprav podle realu.

Kód: Vybrat vše

Option Explicit

Sub ProhledejNahrad()
  Dim SWsht As Worksheet, SBlk As Range, SCll As Range
  Dim TWsht As Worksheet, TBlk As Range, TCll As Range
  ' definice listu a bloku
  Set SWsht = ActiveWorkbook.Worksheets("Sheet2")
  Set TWsht = ActiveWorkbook.Worksheets("Sheet1")
  With SWsht  ' definovat blok na sheet2
    If Len(.Range("a1").Value) > 0 Then
      Set SBlk = .Range("a1:a" & .Range("a1").Offset(.Cells.Rows.Count - 1, 0).End(xlUp).Row)
      With TWsht  ' definovat blok na sheet1
        If Len(.Range("a1").Value) > 0 Then
          Set TBlk = .Range("a1:a" & .Range("a1").Offset(.Cells.Rows.Count - 1, 0).End(xlUp).Row)
          TBlk.Offset(0, 22).Font.ColorIndex = 0 ' odstranit oznaceni nahrad vw sloupci W:W
          For Each TCll In TBlk.Cells  ' prochazet blok na sheet1
            With SBlk  ' a hledat na sheet2
              Set SCll = .Find(TCll.Value, LookIn:=xlValue, LookAt:=xlWhole)
              If Not SCll Is Nothing Then  ' nalezeno
                TCll.Offset(0, 22).Value = SCll.Offset(0, 2).Value  ' nahradit hodnotu ve sloupci W:W
                TCll.Offset(0, 22).Font.ColorIndex = 3 ' oznacit novou hodnotu
              End If
            End With
          Next TCll
        Else
          MsgBox "Na listu " & TWsht.Name & " nejsou data"
          Exit Sub
        End If
      End With
    Else
      MsgBox "Na listu " & SWsht.Name & " nejsou data"
      Exit Sub
    End If
  End With
  Set SWsht = Nothing
  Set SBlk = Nothing
  Set SCll = Nothing
  Set TWsht = Nothing
  Set TBlk = Nothing
  Set TCll = Nothing
End Sub


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Makro pro myš Rapture Python
    od mmmartin » 27 srp 2023 15:18 » v Problémy s hardwarem
    9
    1155
    od mmmartin Zobrazit poslední příspěvek
    29 srp 2023 16:47

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

Kdo je online

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