Makro - Excel

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

Moderátor: Mods_senior

Taps
nováček
Příspěvky: 1
Registrován: listopad 10
Pohlaví: Nespecifikováno
Stav:
Offline

Makro - Excel

Příspěvekod Taps » 19 lis 2010 10:36

Zdravím, v excelu mám vytvořený report a potřeboval bych poradit jak vytvořit makro, které mi na novém listě v prvním sloupečku zobrazí uživatel ( v přiloze uvedeno modrou barvou) a vedle nich bude zobrazeno číslo (v příloze uvedeno červenou barvou).Ideální by ještě bylo kdyby data byla seřazena sestupně podle udaje v druhém sloupečku. Testovací data jsou uvedeny v příloze. Ještě podotknu že uživatelů je více jak 100 a každý může mít uveden neomezeny počet stranek.
priloha(2).zip
(2.4 KiB) Staženo 60 x
Děkuji

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

Re: Makro - Excel

Příspěvekod navstevnik » 19 lis 2010 13:03

Za predpokladu, ze kazdy novy blok udaju je uvozen "User:" a ukoncen "Note:", lze pouzit nize uvednou proceduru (vlozit v editoru VBA do standardniho modulu, v editoru volat F5):
- pro Excel 2007:

Kód: Vybrat vše

Option Explicit

Sub Extrahuj()
  Dim SBlk As Range, SCll As Range
  Dim TCll As Range, OfsR As Long

  With Worksheets("list1")
    Set SBlk = .Range(.Range("A1"), .Cells(.Rows.Count, 1).End(xlUp))
  End With
  Set TCll = Worksheets("list2").Range("a1")
  OfsR = 0
  For Each SCll In SBlk.Cells
    If Left(SCll.Value, 5) = "User:" Then
      TCll.Offset(OfsR, 0).Value = SCll.Offset(0, 1).Value
    End If
    If Left(SCll.Value, 5) = "NOTE:" Then
      TCll.Offset(OfsR, 1).Value = SCll.Offset(0, 2).Value
      OfsR = OfsR + 1
    End If
  Next SCll

  With ActiveWorkbook.Worksheets("List2").Sort
    .SortFields.Add Key:=Range("B1:B" & OfsR), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    .SetRange Range("A1:B" & OfsR)
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
  End With
End Sub

- pro Excel 2000-3:

Kód: Vybrat vše

Option Explicit

Sub Extrahuj()
  Dim SBlk As Range, SCll As Range
  Dim TCll As Range, OfsR As Long

  With Worksheets("list1")
    Set SBlk = .Range(.Range("A1"), .Cells(.Rows.Count, 1).End(xlUp))
  End With
  Set TCll = Worksheets("list2").Range("a1")
  OfsR = 0
  For Each SCll In SBlk.Cells
    If Left(SCll.Value, 5) = "User:" Then
      TCll.Offset(OfsR, 0).Value = SCll.Offset(0, 1).Value
    End If
    If Left(SCll.Value, 5) = "NOTE:" Then
      TCll.Offset(OfsR, 1).Value = SCll.Offset(0, 2).Value
      OfsR = OfsR + 1
    End If
  Next SCll

    Worksheets("list2").Range("a1:b" & OfsR).Sort Key1:=Range("B1"), Order1:=xlDescending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
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
    4782
    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
    12193
    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
    4626
    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
    3318
    od lubo. Zobrazit poslední příspěvek
    24 říj 2024 00:00
  • Excel 2016 - vzorec kombinace podmínek Příloha(y)
    od MK_Vs » 08 led 2025 17:56 » v Kancelářské balíky
    5
    4074
    od lubo. Zobrazit poslední příspěvek
    14 led 2025 00:51

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