Stránka 1 z 1

Excel count stejnych polozek  Vyřešeno

Napsal: 15 led 2009 15:37
od ansting
Dobry den potreboval bych poradit mam sesit v excelu a na kazdem listu jednotlive PC a seznam SW a u nej v druhem sloupci licenci a potreboval bych pak na list Licence provest vypsani vsech SW jenz maji v licenci "nutna licence" a jeli to same na vice kartach pak siclo kolikrat se vyskytuji v sesitu je to mozne nejak provest pomoci macra????
Preden moc dekuji za jakoukoliv pomoc.

SWlist.xls
Predloha s 2 kartama skutecne ma asi 20
(195 KiB) Staženo 32 x

Re: Excel count stejnych polozek

Napsal: 15 led 2009 20:07
od navstevnik
Nize je procedura VBA, vloz v editoru VBA do modulu:

Kód: Vybrat vše

Option Explicit

Sub SWNutnaLicence()
  Dim Sht As Worksheet, SBlok As Range, SCll As Range
  Dim TSht As Worksheet, TBlok As Range, TCll As Range, TNew As Range, i As Long
  i = 0
  Set TSht = Worksheets("licence")
  Set TBlok = TSht.UsedRange
  TBlok.Offset(1, 0).ClearContents
  Set TNew = TSht.Range("a2")
  For Each Sht In ActiveWorkbook.Worksheets
    If Sht.Name <> "Licence" Then
      Set SBlok = Range(Sht.Range("A24"), Sht.Range("A24").End(xlDown))
      For Each SCll In SBlok
        If SCll.Offset(0, 3).Value = "Nutna licence" Then
          Set TBlok = Range(TSht.Range("A2"), TSht.Range("A2").End(xlDown))
          With TBlok
            Set TCll = .Find(SCll.Value, LookIn:=xlValues)
            If Not TCll Is Nothing Then
              TCll.Offset(0, 1).Value = TCll.Offset(0, 1).Value + 1
            Else
              TNew.Offset(i, 0).Value = SCll.Value
              TNew.Offset(i, 1).Value = 1
              i = i + 1
            End If
          End With
        End If
      Next SCll
    End If
  Next Sht
End Sub

Re: Excel count stejnych polozek

Napsal: 16 led 2009 09:42
od ansting
Velke diky presne tohle sme potreboval :D :D

Re: Excel count stejnych polozek

Napsal: 16 led 2009 17:53
od mike007
navstevnik: Moc hezká práce :thumbsup:

Re: Excel count stejnych polozek

Napsal: 17 led 2009 02:44
od navstevnik
Nektere nazvy SW zacinaji mezerou, coz bylo osetreno nepouzitim parametru LokkAt v metode Find, ale nektere jsou shodne s casti delsiho nazvu, cehoz jsem si nevsiml, takze tyto jsou nespravne prirazeny. Nize je opravena verze odstranujici mezery na zacatku (konci), vyhledavajici cele nazvy a doplnena o setrideni soupisu:

Kód: Vybrat vše

Option Explicit

Sub SWNutnaLicence()
  Dim Sht As Worksheet, SBlok As Range, SCll As Range
  Dim TSht As Worksheet, TBlok As Range, TCll As Range, TNew As Range, i As Long
  i = 0
  Set TSht = Worksheets("licence")
  Set TBlok = TSht.UsedRange
  TBlok.Offset(1, 0).ClearContents
  Set TNew = TSht.Range("a2")
  For Each Sht In ActiveWorkbook.Worksheets
    If Sht.Name <> "Licence" Then
      Set SBlok = Range(Sht.Range("A24"), Sht.Range("A24").End(xlDown))
      For Each SCll In SBlok
        If SCll.Offset(0, 3).Value = "Nutna licence" Then
          Set TBlok = Range(TSht.Range("A2"), TSht.Range("A2").End(xlDown))
          With TBlok
            Set TCll = .Find(Trim(SCll.Value), LookIn:=xlValues, LookAt:=xlWhole)
            If Not TCll Is Nothing Then
              TCll.Offset(0, 1).Value = TCll.Offset(0, 1).Value + 1
            Else
              TNew.Offset(i, 0).Value = Trim(SCll.Value)
              TNew.Offset(i, 1).Value = 1
              i = i + 1
            End If
          End With
        End If
      Next SCll
    End If
  Next Sht
  Set TBlok = Range(TSht.Range("A2"), TSht.Range("B2").End(xlDown))
  TBlok.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlNo, _
      OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub