誰かがこれを手伝ってくれるかと思っていました。
1枚のExcelシートに約500,000行あります...他の場合は約600,000行あります...
では、Excelで行の半分だけを選択するにはどうすればよいですか...
つまり、総数が500,000行だとすると、その半分、つまり250,000行だけを選択したいと思います...
そして、それをコピーして新しいファイルに入れ、マクロを再度適用して、その半分、つまり125,000を選択します...
その方法を提案してください。
誰かがこれを手伝ってくれるかと思っていました。
1枚のExcelシートに約500,000行あります...他の場合は約600,000行あります...
では、Excelで行の半分だけを選択するにはどうすればよいですか...
つまり、総数が500,000行だとすると、その半分、つまり250,000行だけを選択したいと思います...
そして、それをコピーして新しいファイルに入れ、マクロを再度適用して、その半分、つまり125,000を選択します...
その方法を提案してください。
これを試して:
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
された行と最後に使用された行を特定するために使用されます(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