- Вставить столбец
- В первой строке вставить формулу = MOD (ROW (), 7)
- Скопировать вниз
- Копировать / вставить специальные / значения
- Данные / Отфильтруйте те, которые вы хотите (0 или 6, вероятно)
- Удалить остальные строки Удалить фильтр Удалить столбец
Выберите каждую n-ую строку в Excel
У меня есть таблица Excel с тысячами строк. Я хочу выбрать каждую 7-ю строку в этой таблице. (Под «выбором» я подразумеваю удалить все остальные строки или скопировать выбранные строки в новый рабочий лист.)
Какой самый простой способ сделать это в Excel 2003?
Смотрите также: Выберите каждую n-ую строку в Numbers
6 ответов на вопрос
- Популярные
- Новые
- С комментариями
- Активные
Лично я записал бы макрос, чтобы сделать первые три или четыре строки (с шагом 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
Действительно только заканчивая идею, которую начал Рэндольф Поттер ....
Для записи, я не думаю, что вы могли бы придумать это путем записи. Запись макросов - хороший способ познакомиться с объектной моделью 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
- Вставьте столбец.
- В первом ряду вставьте
1
. - Скопируйте вниз в строку 7 с Ctrlнажатой.
- Возьмите этот блок и сделайте то же самое до конца.
- Данные / Фильтр те, которые вам не нужны, и удалите их.
- Удалить вставленный столбец.
для выбора каждой 7-й строки есть более ЛЕГКИЙ ПУТЬ: в первых 7 строках вашего столбца, кроме одного (первого), вы что-то пишете внутри. Затем вы выбираете эти 7 строк и копируете их на весь столбец. Теперь, что вам нужно, это просто перейти к SELECT-> GO TO SPECIAL-> select BLANKS-> OK. У вас есть каждые 7 строк выбора. Теперь вы можете делать то, что вы хотите. Наслаждайтесь!
за каждый 7-й ряд,
- Вставить столбец
- В ряду с 1 по 6 поставить «Х»
- в строке 7 поставить 1,
- автоматически заполнить ваш столбец с этим блоком
- Используйте «Удалить дубликаты» в этом столбце
- Удалить 1-й ряд (с 1-й "Х").
- Удалить добавленный столбец
Похожие вопросы
-
3
Мой файл заблокирован в Excel 2007, что происходит?
-
2
Есть ли способ заставить Excel 2007 автоматически восстанавливать фоновые файлы, как в MS Word?
-
1
Excel Word Wrap + исчезающий текст
-
-
1
Простое объединение / очистка с помощью Excel
-
7
Как вы поддерживаете Microsoft Excel на полной скорости, даже если у него нет фокуса окна?
-
2
Почему вы не можете копировать / вставлять изображения в Excel, но скриншоты работают?
-
3
Как синхронизировать Excel с таблицей Google Docs
-
9
Как разделить имя, чтобы получить имя и фамилию?
-
1
Ссылки в Excel изменены после сбоя
-
1
Каков наилучший способ поделиться макросом Excel на нескольких машинах?