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 57 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
  • Makro pro myš Rapture Python
    od mmmartin » 27 srp 2023 15:18 » v Problémy s hardwarem
    9
    1281
    od mmmartin Zobrazit poslední příspěvek
    29 srp 2023 16:47
  • Excel a OneDrive
    od sginfo » 11 zář 2023 15:28 » v Kancelářské balíky
    16
    6906
    od mirekol Zobrazit poslední příspěvek
    20 říj 2023 08:31
  • excel-posun makra
    od actionboy » 12 bře 2024 18:59 » v Kancelářské balíky
    1
    730
    od Grimm Zobrazit poslední příspěvek
    12 bře 2024 21:43
  • Excel - problém se vzorci
    od honzzicek » 28 čer 2023 21:45 » v Kancelářské balíky
    2
    2048
    od honzzicek Zobrazit poslední příspěvek
    01 črc 2023 08:57
  • Excel - vlastní formát Příloha(y)
    od Story-Long » 11 srp 2023 14:50 » v Kancelářské balíky
    3
    2321
    od Story-Long Zobrazit poslední příspěvek
    14 srp 2023 10: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 3 hosti