Stránka 1 z 1

automatické kopírování celých řádků mezi listy

Napsal: 16 říj 2008 15:27
od xhave
Ahoj,
chtěla jsem poprosit o pomoc
chtěla bych v excelu provést následující akci -
v listu1 si vytvářím databázi s infomacema o subjektech ve sloupci A si písmenem označím typ subjektu a chtěla bych aby podle písmene se mi jednotlivé řádky rozkopírovaly na následující listy.
něco v duchu "if A1= L, zkopírovat celý řádek na list2" , "if A1=M, zkopírovat celý řádek na list3" atd.

nevím jestli na to existuje nějaká funkce, nebo musím přes makro.
Pokud přes makro - neporadili byste mi někdo nějaký zdroj pro základy programování maker.
díky předem

Re: automatické kopírování celých řádků mezi listy

Napsal: 16 říj 2008 17:44
od navstevnik
resenim je procedura ve VBA
v editoru VBA (spustit Alt+F11) vlozit do modulu nasledujici:

Kód: Vybrat vše

Option Explicit
Option Compare Binary

Sub KopirovatNaListy()
' zdrojova data jsou na aktivnim listu, na cilovych listech v prvnim radku hlavicky
' nazvy cilovych listu jsou definovany v teto subrutine
Dim ZdrojOblast As Range, ZdrojRadek As Range, PoslSloupec As Range, c As Range
Dim CilList As String, CilRadek As Range, PoslRadek As Range
  Set ZdrojOblast = ActiveSheet.UsedRange
  Set ZdrojOblast = ZdrojOblast.Resize(ZdrojOblast.Rows.Count, 1)
  For Each c In ZdrojOblast.Cells
    ' urceni poctu bunek v radku na zdrojovem listu
    Set PoslSloupec = ActiveSheet.Range(c.Row & ":" & c.Row).Cells(Range(c.Row & ":" & c.Row).Cells.Count)
    ' presun na posledni neprazdny sloupec
    If IsEmpty(PoslSloupec) Then Set PoslSloupec = PoslSloupec.End(xlToLeft)
    ' definovat zdrojovy radek, zdrojova data zacinaji ve sloupci B:B,
    ' ve sloupci A:A je identifikace ciloveho listu
    Set ZdrojRadek = c.Resize(1, PoslSloupec.Column - 1).Offset(0, 1)
    ' urceni nazvu ciloveho listu
    Select Case c.Value
      Case "L"
        CilList = "list3"
      Case "M"
        CilList = "list4"
      Case "N"
        CilList = "list5"
      ' dalsi listy
    End Select
    ' urceni posledniho radku na cilovem listu, ulozena data zacinaji ve sloupci A:A
    Set PoslRadek = Worksheets(CilList).Range("A:A").Cells(Range("A:A").Cells.Count)
     ' presun na posledni neprazny radek listu
    If IsEmpty(PoslRadek) Then Set PoslRadek = PoslRadek.End(xlUp)
    Set CilRadek = PoslRadek.Resize(1, PoslSloupec.Column - 1).Offset(1, 0) 'definovat cilovy radek
    CilRadek.Value = ZdrojRadek.Value
  Next c
End Sub


k programovani: treba zde http://www.officir.ic.cz/excelentne.html nebo http://www.xlpert.com/toc.htm a hledat vhodne zdroje na netu