Excel宏,用于仅选择工作表中总行数的一半

时间:2012-05-18 19:54:45

标签: excel excel-vba excel-2007 vba

我想知道是否有人可以帮我这个..

我在一张excel表中有大约500,000行......而在其他excel表中我有大约600,000行......

那么我如何只选择Excel中的一半行...

我的意思是假设总数是500,000行...... 那么我想只选择一半的250,000行...

复制并将其放入新文件并再次应用宏来选择其中的一半,即125,000 ...

请建议如何做到这一点。

2 个答案:

答案 0 :(得分:1)

此代码

  • 使用Find来标识特定工作表中真实的第一个和最后一个使用的行(我使用变量ws作为工作表,以防您想要处理非活动工作表)
  • 如果工作表不为空,则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
    

答案 1 :(得分:1)

试试这个:

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