Виберіть кожен n-й рядок в Excel


15

У мене електронна таблиця Excel з тисячами рядків. Я хочу вибрати кожен 7-й рядок із цієї таблиці. (Під "Select" я маю на увазі видалити всі інші рядки або скопіювати вибрані рядки на новий робочий аркуш.)

Який найпростіший спосіб зробити це в Excel 2003?

Дивіться також: Виберіть кожен n-й рядок у «Числах»

Відповіді:


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> Підзаглиблення () Dim i As Long For i = 988 до 1 крок -7 аркуша1.Келлі (i, 1) .Offset (1, 0). (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-> вибрати BLANKS-> OK. Вибір маєте кожен 7 рядків. Тепер ви можете робити те, що хочете. Насолоджуйтесь!


0

для кожного 7-го ряду,

  1. Вставте стовпчик
  2. У рядку 1 до рядка 6 поставте "X"
  3. у рядок 7 поставте 1,
  4. автоматично заповнюйте свій стовпець цим блоком
  5. Використовуйте "Видалити копії" у цьому стовпці
  6. Видаліть 1-й рядок (з 1-го "X").
  7. Видалити доданий стовпець

Ласкаво просимо до Супер Користувача. Це, по суті, методи, запропоновані у прийнятій відповіді, і той, який використовується пнутами, лише більше роботи (і руйнівний). Не ясно, що це сприяє.
fixer1234

Це просто використання іншого меню, на мій погляд, не більше роботи, ні руйнівнішого, ніж оригінальні запити на плакат ("видалити всі інші рядки").
Понч
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.