Stránka 1 z 1

Help excel\calc-funkce

Napsal: 17 črc 2009 11:31
od blauangel
zravim
potřeboval bych najit funkci s určitými vlastnostmy a to:
přesunout (skopírovat) nebo vytisknout řádek je li v určit buňce v tom řádku více než nula.
předem děkuji za návrhy :D

Re: Help excel\calc-funkce

Napsal: 17 črc 2009 15:53
od navstevnik
Bohuzel z principu to nemuze byt funkce listu, protoze funkce vraci hodnotu do bunky.
Resenim je udalostni procedura listu Worksheet_Calculate(), ktera prohleda sloupec s prislunou bunkou (pokud se jedna o vice radku) a vykona pozadovany presun nebo tisk.
Protoze je dotaz znacne obecny, neprikladam konkretni reseni. Mas-li zajem, upresni zadani - kde, rozhodovaci kriterium, zmena je vyvolana vlozenim hodnoty nebo zmenou funkcni hodnoty, presun kam nebo tisk,...

Re: Help excel\calc-funkce

Napsal: 21 črc 2009 16:56
od blauangel
děkuju za odpověd a skzusim to upřesnit
mam tabulku
jmeno, cena, kusů, cena dohromady,
a potřebuju skopírovat každý řádek ve kterém je víc kusů než nula
nevym jestli to stačí ale nevym co bych cem este napsal

Re: Help excel\calc-funkce

Napsal: 21 črc 2009 18:35
od navstevnik
reseni pro Excel:
na listu1 je hlavickovy radek (jmeno, cena, kusů, cena dohromady), radky splnujici podminku jsou presunuty na pomocny list a pak vytisknuty (jako nahled, zmen parametr v procedure) prostrednictvim nize uvedene procedury VBA (v editoru VBA - Alt+F11 - vloz do standardniho modulu), napr:

Kód: Vybrat vše

Option Explicit

Sub PresunATiskni()
  Dim SBlok As Range, SCll As Range, TCll As Range, i As Long
  ' definice bloku bunek s poctem kusu
  With Worksheets("list1")
    Set SBlok = Intersect(.UsedRange, .Range("c:c"))
  End With
  'aktivace pomocneho listu list2
  With Worksheets("list2")
    ' odstranit obsah na listu2
    .UsedRange.EntireRow.Delete
    ' definice cile pro sestaveni tiskoveho listu
    Set TCll = .Range("a1:d1")
    i = 0
    ' vyhledavaci smycka
    For Each SCll In SBlok.Cells
      If SCll.Value > 0 Then
        ' preneseni radku splnujiciho podminku (i hlavickoveho)
        TCll.Offset(i, 0).Value = SCll.Resize(1, 4).Offset(0, -2).Value
        i = i + 1
      End If
    Next SCll
    ' vyber tabulky k tisku
    .UsedRange.Columns.AutoFit
    ' zde je nastaveno nahled - Preview:=True, pro tisk na tiskarnu nastav Preview:=False
    .UsedRange.PrintOut Copies:=1, Preview:=True, Collate:=True
  End With
End Sub