Выберите каждую n-ую строку в Excel


15

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

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

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

Ответы:


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

Неплохое решение. Мне нравятся мои макросы, так что это мой первый выбор, но это также может сработать с небольшим усилием.

2
= MOD (ROW (), 7) вам нужен второй аргумент.
dkusleika

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
...

Если вы используете макрос, попробуйте вернуться назад <code> <pre> Sub delrows () Dim i As Long For i = 988 до 1 Шаг -7 Sheet1.Cells (i, 1) .Offset (1, 0) .Resize (6) .EntireRow.Delete Next i End Sub </ pre> </ code> Если вы удалите строки, цикл не сойдет с ума.
dkusleika

Он не удаляет, просто добавляет строку к объекту диапазона (подразумевается в комментарии)
DaveParillo

1
Он говорит: «выбрав, я имею в виду удалить все остальные строки ...»
dkusleika

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. Удалить вставленный столбец.

Спасибо за ответ. Можете ли вы уточнить на шаге 3? Вы хотите удерживать нажатой клавишу Ctrl при перетаскивании мыши? У меня нет доступа к Excel 2003, поэтому я не могу проверить.
Патрик МакЭлхани

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. Удалить добавленный столбец

Добро пожаловать в Супер пользователя. Это, по сути, методы, предложенные в принятом ответе, и метод pnuts, только больше работы (и разрушительные). Не ясно, что это способствует.
fixer1234

Это просто использование другого меню, на самом деле не более трудоемкое и не более разрушительное, чем исходные запросы постера («удалить все остальные строки»).
Понч
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.