Excel- makro na vyhledání a přesunutí

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

Re: Excel- makro na vyhledání a přesunutí

Příspěvekod Hawkey » 02 črc 2010 14:48

tady je ukazka jak to ma byt finalne
Přílohy
ukazka.xlsx
(10.93 KiB) Staženo 61 x

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

Re: Excel- makro na vyhledání a přesunutí

Příspěvekod navstevnik » 02 črc 2010 17:35

Uvadis v popisu cinnosti: "Takto se spojí za podmínky, že sloupce A,B,E a F jsou stejné", pro shodne B, E, F je vsak hodnota v A rozdilna.
Nize uvedena procedura tedy vykona pozadovane mimo shodu v A za predpokladu, ze sheet1 je setriden jak uvadis:

Kód: Vybrat vše

Option Explicit

Sub FindTransfer()
  Dim SBlk As Range, SCll As Range, Tmp As String, OldSCll As String, Separator As String
  Dim TBlk As Range, TCllE As Range, TCllK As Range, TOfsR As Long, TOfsC As Integer
  ' cilove bloky
  With Worksheets("sheet2")
    Set TBlk = .Range("a1:j1")
    Set TCllE = .Range("e1")
    Set TCllK = .Range("k1")
  End With
  TOfsR = -1
  With Worksheets("sheet1")
    Set SBlk = .Range("f1:f" & .Cells(Rows.Count, 1).End(xlUp).Row)  ' zdoj blok
  End With
  ' prohledavat SBlk
  OldSCll = vbNullString
  For Each SCll In SBlk.Cells
    Tmp = SCll.Offset(0, -4).Value & SCll.Offset(0, -1).Value & SCll.Value  ' sloupce B, E, F
    If Tmp <> OldSCll Then  ' nova skupina
      OldSCll = Tmp  ' ulozit novy stav sloupce B, E, F
      ' prenest blok  Ax:Jx
      TOfsR = TOfsR + 1  ' ofset radku na cilovem listu
      TOfsC = 0  ' ofset sloupce
      Separator = " "
      TBlk.Offset(TOfsR, 0).Value = SCll.Resize(1, 10).Offset(0, -5).Value  ' Ax:Jx
    End If
    With TCllE.Offset(TOfsR, 0)
      .Value = .Value & Separator & SCll.Offset(0, -5).Value  ' pridat do sl E:E hodnotu ze sloupce A:A
    End With
    ' hodnoty ze sloupce A,I, H do K (L, ...) pro prvni a dalsi shodne vyrobky
    With SCll
      TCllK.Offset(TOfsR, TOfsC).Value = .Offset(0, -5).Value & ":" & .Offset(0, 3).Value & ";" & .Offset(0, 2).Value
    End With
    Separator = ", "
    TOfsC = TOfsC + 1  ' ofset sloupcu
  Next SCll
  With Worksheets("sheet2")
    .Range(.UsedRange.Address).Columns.AutoFit  ' upravit sirku sloupcu
  End With
  Set SBlk = Nothing
  Set SCll = Nothing
  Set TBlk = Nothing
  Set TCllE = Nothing
  Set TCllK = Nothing
End Sub


  • 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
    4759
    od Riviera kid Zobrazit poslední příspěvek
    02 zář 2024 16:21
  • Přechod z Excel 21 na Excel 24
    od Snekment » 29 led 2025 13:46 » v Kancelářské balíky
    2
    12171
    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
    4565
    od atari Zobrazit poslední příspěvek
    07 kvě 2025 09:41
  • Excel - výpočet nočních hodin Příloha(y)
    od Uziv00 » 17 říj 2024 11:22 » v Kancelářské balíky
    3
    3308
    od lubo. Zobrazit poslední příspěvek
    24 říj 2024 00:00
  • Tisk sloupců vedle sebe na A4 - Excel
    od atari » 24 dub 2025 10:51 » v Kancelářské balíky
    5
    3906
    od atari Zobrazit poslední příspěvek
    26 dub 2025 09:11

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

Kdo je online

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