1

誰かがこれを手伝ってくれるかと思っていました。

1枚のExcelシートに約500,000行あります...他の場合は約600,000行あります...

では、Excelで行の半分だけを選択するにはどうすればよいですか...

つまり、総数が500,000行だとすると、その半分、つまり250,000行だけを選択したいと思います...

そして、それをコピーして新しいファイルに入れ、マクロを再度適用して、その半分、つまり125,000を選択します...

その方法を提案してください。

4

2 に答える 2

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
于 2012-05-21T02:14:53.903 に答える
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
    
于 2012-05-19T05:13:25.347 に答える