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

115962
Patrick McElhaney

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

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

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

13

6 ответов на вопрос

17
Todd Pierzina
  1. Вставить столбец
  2. В первой строке вставить формулу = MOD (ROW (), 7)
  3. Скопировать вниз
  4. Копировать / вставить специальные / значения
  5. Данные / Отфильтруйте те, которые вы хотите (0 или 6, вероятно)
  6. Удалить остальные строки Удалить фильтр Удалить столбец
Неплохое решение. Мне нравятся мои макросы, так что это мой первый выбор, но это также может сработать с небольшим усилием. 15 лет назад 0
= MOD (ROW (), 7) вам нужен второй аргумент. dkusleika 15 лет назад 2
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 ... 
Если вы используете макрос, попробуйте
Sub delrows() Dim i As Long For i = 988 To 1 Step -7 Sheet1.Cells(i, 1).Offset(1, 0).Resize(6).EntireRow.Delete Next i End Sub
вернуться назад. Если вы удалите строки, цикл не сойдет с ума. dkusleika 15 лет назад 0
Он не удаляет, а просто добавляет строку к объекту диапазона (подразумевается в комментарии) DaveParillo 15 лет назад 0
Он говорит: «выбрав, я имею в виду удалить все остальные строки ...» dkusleika 15 лет назад 0
3
DaveParillo

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

Для записи, я не думаю, что вы могли бы придумать это путем записи. Запись макросов - хороший способ познакомиться с объектной моделью 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 
С тобой на многоразовом понятии. 15 лет назад 0
3
pnuts
  1. Вставьте столбец.
  2. В первом ряду вставьте 1.
  3. Скопируйте вниз в строку 7 с Ctrlнажатой.
  4. Возьмите этот блок и сделайте то же самое до конца.
  5. Данные / Фильтр те, которые вам не нужны, и удалите их.
  6. Удалить вставленный столбец.
Спасибо за ответ. Можете ли вы уточнить на шаге 3? Вы хотите удерживать нажатой клавишу Ctrl при перетаскивании мыши? У меня нет доступа к Excel 2003, поэтому я не могу проверить. Patrick McElhaney 12 лет назад 0
@PatrickMcElhaney Извините, я мог бы быть яснее! Захватите ячейку, содержащую клавишу «1», перетащите ее вниз до строки 7, удерживая нажатой левую кнопку мыши, и, удерживая нажатой клавишу Ctrl, отпустите кнопку мыши. Простое перетаскивание должно отобразить небольшой `1` SE курсора, и это должно измениться на` 7`, пока нажата Ctrl. До 2003 года я тоже не знаю, но по памяти Excel 2007 ничем не отличается в этом отношении (надеюсь!) pnuts 12 лет назад 0
1
Davide Di Grumo

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

0
Ponch

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

  1. Вставить столбец
  2. В ряду с 1 по 6 поставить «Х»
  3. в строке 7 поставить 1,
  4. автоматически заполнить ваш столбец с этим блоком
  5. Используйте «Удалить дубликаты» в этом столбце
  6. Удалить 1-й ряд (с 1-й "Х").
  7. Удалить добавленный столбец
Добро пожаловать в Супер пользователя. Это, по сути, методы, предложенные в принятом ответе, и те, что pnuts, только больше работы (и разрушительные). Не ясно, что это способствует. fixer1234 6 лет назад 0
Это просто использование другого меню, на самом деле не более трудоемкое, на мой взгляд, и не более разрушительное, чем исходные запросы постера («удалить все остальные строки»). Ponch 6 лет назад 0

Похожие вопросы