У меня есть электронная таблица Excel с тысячами строк. Я хочу выбрать каждую 7-ю строку из той электронной таблицы. ("Выбором" я имею в виду, удаляют все другие строки или копируют выбранные строки в новый рабочий лист.)
Что самый легкий путь состоит в том, чтобы сделать это в Excel 2003?
См. также: Выберите каждую энную строку в Числах
Лично, я записал бы макрос, чтобы сделать первые три или четыре строки (в инкрементах с 7 строками, конечно), и скопировать строки в новый лист. Затем я отредактировал бы макрос для использования цикла, который рассчитывает к количеству населенных строк в листе с шагом 7.
Псевдопример кода:
Dim i as Integer
For i = 1 To 1000 Step 7
'Add current row to selection
...
Next i
'Copy the selected rows to new sheet
...
Действительно только закончив идею запущенный Randolph Potter....
Для записи я не думаю, что Вы могли когда-либо придумывать это путем записи. Макро-запись является хорошим способом ознакомиться с Excel Object Model, но не очень хорошим способом записать допускающие повторное использование функции.
Option Explicit
'A simple test that copies every 7th row from the active sheet to a new sheet.
Sub SimpleTest()
Dim r As Range
Dim ws As Worksheet
Set r = GetEveryNthRow(7)
If Not r Is Nothing Then
Set ws = Worksheets.Add(Before:=Sheets(1))
r.Copy ws.Range("A1")
Else
MsgBox "Nothing came back from GetEveryNthRow"
End If
Set ws = Nothing
Set r = Nothing
End Sub
'
Function GetEveryNthRow(ByVal NthRow As Long) As Range
Dim keepRows As Range
Dim r As Range
If NthRow > 0 Then
Set keepRows = Rows(1)
For Each r In ActiveSheet.UsedRange.Rows
If (r.Row Mod NthRow) = 0 Then
Set keepRows = Union(keepRows, Rows(r.Row))
End If
Next r
Set GetEveryNthRow = keepRows
Else
MsgBox "The row multiple provided must be greater than 0"
End If
Set keepRows = Nothing
End Function