Zkopírujte z řádku do posledního řádku s daty do jednoho listu pomocí VBA v aplikaci Microsoft Excel

Anonim
  • Makro přidá do sešitu list s názvem Hlavní a zkopíruje buňky z každého listu ve vašem sešitu v tomto listu.
  • První makro provede normální kopírování a druhé makro zkopíruje hodnoty.
  • Subwoody makra používají níže uvedené funkce, makra bez těchto funkcí nebudou fungovat.
Sub CopyFromRow () Dim sh As Asheet Dim Dim DestSh As worksheet Dim shLast As Long Dim Last Last Long If SheetExists ("Master") = True Then MsgBox "The sheet master already exist" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name = "Master" Pro každý sh In ThisWorkbook.Worksheets If sh.Name DestSh.Name Then If sh.UsedRange.Count> 1 Then Last = LastRow (DestSh) shLast = LastRow (sh) sh.Range ( sh.Rows (3), sh.Rows (shLast)). Copy DestSh.Cells (Last + 1, 1) End If End If Next Application.ScreenUpdating = True End Sub Sub CopyFromRowValues ​​() Dim sh As Asheet Dim DestSh As Worksheet Dim shLast As Long Dim Last Last Long If SheetExists ("Master") = True Then MsgBox "The sheet master already exist" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name = "Master" for each sh In ThisWorkbook.Worksheets If sh.Name DestSh.Name Then If sh.UsedRange.Count> 1 Then Last = LastRow (DestSh) shLast = LastRow (sh) With sh.Range (sh.Rows (3), sh.Rows (shLast)) DestSh.Cells (Last + 1, 1) .Resize (.Rows.Count, _ .Columns.Count) .Value = .Value End With End If End If Next Application.ScreenUpdating = True End Sub Funkce LastRow (pracovní list sh As) Při chybě Pokračovat Další LastRow = sh.Cells.Find (Co: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas , _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False). Řádek při chybě GoTo 0 Konec Funkce Funkce Lastcol (pracovní list sh As) Při chybě Pokračovat Další Lastcol = sh.Cells.Find (Co: = " *", _ After: = sh.Range (" A1 "), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlPrevious, _ MatchCase: = False). Sloupec při chybě GoTo 0 Koncová funkce Funkce SheetExists (SName jako řetězec, _ Volitelně ByVal WB jako sešit) Jako Boolean Při chybě Pokračovat Další Pokud WB není nic, pak nastavte WB = ThisWorkbook SheetExists = CBool ​​(Len (Sheets (SName) .Name)) End Function