Копирайте от ред до последния ред с данни в един лист, използвайки VBA в Microsoft Excel

Anonim
  • Макросът ще добави лист с името Master към вашата работна книга и ще копира клетките от всеки лист във вашата работна книга в този работен лист.
  • Първият макрос прави нормално копие, а вторият макрос копира стойностите.
  • Поддръжките на макроса използват функциите по -долу, макросите няма да работят без функциите.
Sub CopyFromRow () Dim sh като работен лист Dim DestSh като работен лист Dim shLast толкова дълъг dim последен толкова дълго, ако SheetExists ("Master") = True тогава MsgBox "Master Master вече съществува" Излезте от Sub End, ако Application.ScreenUpdating = False Set DestSh = Работни листове.Добавете DestSh.Name = "Master" за всеки sh в ThisWorkbook.Worksheets Ако sh.Name DestSh.Name Тогава If sh.UsedRange.Count> 1 Тогава Last = LastRow (DestSh) shLast = LastRow (sh) sh.Range ( sh.Rows (3), sh.Rows (shLast)). Копиране на DestSh.Cells (Last + 1, 1) End If End If Next Application.ScreenUpdating = True End Sub Sub CopyFromRowValues ​​() Dim sh като работен лист Dim DestSh като работен лист Dim shLast As Long Dim Long As Long If SheetExists ("Master") = True then MsgBox "Master Master вече съществува" Излезте от Sub End, ако Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name = "Master" за всеки sh В ThisWorkbook.Worksheets Ако sh.Name DestSh.Name Тогава Ако sh.UsedRange.Count> 1 Тогава Last = LastRow (DestSh) shLast = LastRow (sh) С 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 Функция LastRow (sh As Worksheet) On Error Resume Next LastRow = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas , _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False). Грешка при включване GoTo 0 Крайна функция Функция Lastcol (sh As Worksheet) On Error Resume Next Lastcol = sh.Cells.Find (What: = " *", _ След: = sh.Range (" A1 "), _ Потърсете: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlPrevious, _ MatchCase: = False). Колона при грешка GoTo 0 Крайна функция Функция SheetExists (SName As String, _ Незадължително ByVal WB като работна книга) Като булева стойност при грешка Възобновяване на следващо, ако WB не е нищо, след това задайте WB = ThisWorkbook SheetExists = CBool ​​(Len (Sheets (SName) .Name)) Крайна функция