Excelmacros只select工作表中总行数的一半

我想知道如果有人可以帮我这个..

我在一张excel表格中有大约50万行……而在另一些行中我有大约60万行…

那么如何selectExcel中只有一半的行…

我的意思是假设总数是50万行…那么我只想select25万行的一半…

并复制,并把它新的文件,并再次申请macrosselect一半,即125000 …

请build议如何做到这一点。

尝试这个:

Sub CopyHalfRows() Dim TargetWorkbook As Workbook Dim HalfRows As Range On Error GoTo HalfRowsImpossible Set HalfRows = ActiveSheet.UsedRange.Resize _ (ActiveSheet.UsedRange.Rows.Count \ 2) On Error GoTo 0 If Not HalfRows Is Nothing Then Set TargetWorkbook = Workbooks.Add HalfRows.Copy ActiveSheet.PasteSpecial End If Exit Sub HalfRowsImpossible: MsgBox "Cannot halve worksheet" On Error GoTo 0 End Sub 

这个代码

  • 使用Find来识别特定工作表中真正的第一个和最后一个使用的行(如果您想在非活动工作表上工作,我使用了variablesws作为工作表)
  • 如果工作表不是空的,则rng3返回一个新的范围,该范围从第一个使用的行开始,并延伸第一行和最后一行之间的一半距离

     Sub GetHalfRows() Dim ws As Worksheet Dim rng1 As Range Dim rng2 As Range Dim rng3 As Range Set ws = ActiveSheet Set rng1 = ws.Cells.Find("*", ws.[a1], , , xlByRows, xlPrevious) Set rng2 = ws.Cells.Find("*", ws.Cells(Rows.Count, "A"), , , xlByRows, xlNext) If Not rng1 Is Nothing Then Set rng3 = ws.Range(rng2, rng2.Offset((rng1.Row - rng2.Row) / 2, 0)).EntireRow MsgBox "selected range is " & rng3.Address Else MsgBox ws.Name & " is empty" End If End Sub