13

У меня есть таблица Excel с тысячами строк. Я хочу выбрать каждую 7-ю строку в этой таблице. (Под «выбором» я подразумеваю удалить все остальные строки или скопировать выбранные строки в новый рабочий лист.)

Какой самый простой способ сделать это в Excel 2003?

Смотрите также: Выберите каждую n-ую строку в Numbers

6 ответов6

17
  1. Вставить столбец
  2. В первой строке вставить формулу = MOD(ROW(), 7)
  3. Скопировать вниз
  4. Копировать / вставить специальные / значения
  5. Данные / Отфильтруйте те, которые вы хотите (0 или 6, вероятно)
  6. Удалить остальные строки Удалить фильтр Удалить столбец
3

Лично я записал бы макрос, чтобы сделать первые три или четыре строки (с шагом 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
...
3

Действительно только заканчивая идею, которую начал Рэндольф Поттер ....

Для записи, я не думаю, что вы могли бы придумать это путем записи. Запись макросов - хороший способ познакомиться с объектной моделью Excel, но не очень хороший способ написания многократно используемых функций.

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
3
  1. Вставьте столбец.
  2. В первом ряду вставьте 1 .
  3. Скопируйте вниз в строку 7 с нажатой клавишей Ctrl .
  4. Возьмите этот блок и сделайте то же самое до конца.
  5. Данные / Фильтр те, которые вам не нужны, и удалите их.
  6. Удалить вставленный столбец.
1

для выбора каждой 7-й строки есть более ЛЕГКИЙ ПУТЬ: в первых 7 строках вашего столбца, кроме одного (первого), вы что-то пишете внутри. Затем вы выбираете эти 7 строк и копируете их на весь столбец. Теперь, что вам нужно, это просто перейти к SELECT-> GO TO SPECIAL-> select BLANKS-> OK. У вас есть каждые 7 строк выбора. Теперь вы можете делать то, что вы хотите. Наслаждайтесь!

0

за каждый 7-й ряд,

  1. Вставить столбец
  2. В ряду с 1 по 6 поставить "Х"
  3. в строке 7 поставить 1,
  4. автоматически заполнить ваш столбец с этим блоком
  5. Используйте "Удалить дубликаты" в этом столбце
  6. Удалить 1-й ряд (с 1-м "Х").
  7. Удалить добавленный столбец

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .