Excel count stejnych polozek Vyřešeno

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

Moderátor: Mods_senior

ansting
nováček
Příspěvky: 2
Registrován: leden 09
Pohlaví: Muž
Stav:
Offline

Excel count stejnych polozek  Vyřešeno

Příspěvekod ansting » 15 led 2009 15:37

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 31 x

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

Re: Excel count stejnych polozek

Příspěvekod navstevnik » 15 led 2009 20:07

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

ansting
nováček
Příspěvky: 2
Registrován: leden 09
Pohlaví: Muž
Stav:
Offline

Re: Excel count stejnych polozek

Příspěvekod ansting » 16 led 2009 09:42

Velke diky presne tohle sme potreboval :D :D

Uživatelský avatar
mike007
Master Level 7.5
Master Level 7.5
Příspěvky: 5860
Registrován: srpen 07
Bydliště: Pardubice
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Excel count stejnych polozek

Příspěvekod mike007 » 16 led 2009 17:53

navstevnik: Moc hezká práce :thumbsup:
Nejlepší hra je Excel!
Pravidla fóra PC-helpJak označit téma za vyřešené
»»»»»»»»»»»»»»»»»»»»»»»
UPOZORNĚNÍ - můj Skype, Soukromé zprávy či email neslouží jako tech. podpora.
Dotazy pište do fóra. Od toho tu je.

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

Re: Excel count stejnych polozek

Příspěvekod navstevnik » 17 led 2009 02:44

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


  • 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
    4731
    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
    12155
    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
    4504
    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
    3286
    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
    3894
    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 8 hostů