Удалить 6-ю 7-ю последовательные строки в большом листе данных Microsoft Excel - PullRequest
0 голосов
/ 31 октября 2019

Я сделал большую таблицу Excel в MS Excel, и моя ошибка, добавленная в него, включала в себя некоторые повторяющиеся данные, данные в моей таблице Excel на каждой 6-й позиции не нужны, и я хочу удалить эти строки.

У меня есть поиск по всем сайтам Google plus, stackoverflow, ave, я пытался импортировать данные в mysqlworkbench и применять операции, но ничего не получалось.

Я просто хочу удалить каждую 6-ю и 7-ю строку из моего листа Excel с строкой 3000+Я приложил отрывок для ясности, желтый цвет сделан только мной, чтобы показать, что эти строки должны быть удалены. enter image description here Любая помощь будет оценена

Ответы [ 2 ]

1 голос
/ 31 октября 2019
  • Создание вспомогательного столбца с формулой:

=mod(row(),7)
  • фильтр для значений >1
  • Выберите столбцы и GoTo Special Visible Cells Only
  • Скопируйте и вставьте в новое местоположение.

Или вы можете использовать Power Query для реализации того же алгоритма, если он будет повторяться.

В PQ- Добавить столбец индекса, начинающийся с нуля - Добавить пользовательский столбец с формулой: Number.Mod([Index],7) - Отфильтровать пользовательский столбец, отменив выбор 5 и 6 - Удалить индекс и пользовательские столбцы

Все можно сделатьиз GUI.

М-код

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Added Index" = Table.AddIndexColumn(Source, "Index", 0, 1),
    #"Added Custom" = Table.AddColumn(#"Added Index", "Custom", each Number.Mod([Index
],7)),
    #"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Custom] <> 5 and [Custom] <> 6)),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Index", "Custom"})
in
    #"Removed Columns"

РЕДАКТИРОВАТЬ

Если вы действительно хотите сделать, это удалитьSat и Sun, тогда формула вспомогательного столбца должна быть:

=text(a2,"ddd")

и отфильтровать путем отмены выбора Sat и Sun

0 голосов
/ 31 октября 2019

Для быстрого решения VBA я вспомнил этот вопрос , чтобы ускорить сабвуфер, который скрывает большое количество строк.

Это легко приспособить, чтобы скрыть каждый 6-й и 7-й ряд спростой счетчик. Если затем вы поменяете .hidden на .delete, у вас будет чрезвычайно быстрая функция, дающая вам необходимый результат:

Sub murge()
Dim mergedRng As Range
Dim lastr As Integer
Dim cel As Range
Dim i As Integer

lastr = Range("A" & Rows.Count).End(xlUp).Row
For Each cel In Range("A1:A" & lastr)
    If i > 5 Then
        If i > 6 Then
            i = 0
            Set mergedRng = Application.Union(mergedRng, cel)
            Else
                If Not mergedRng Is Nothing Then
                    Set mergedRng = Application.Union(mergedRng, cel)
                        Else
                        Set mergedRng = cel
                End If
        End If
    End If
    i = i + 1
Next cel
If Not mergedRng Is Nothing Then mergedRng.EntireRow.Delete
Set mergedRng = Nothing
End Sub

Прежде чем удалять ценные данные, сначала протестируйте некоторые фиктивные данные. В зависимости от того, есть ли у вас заголовки столбцов и какова их длина, вам может понадобиться изменить i = 0 в начале, чтобы он был выше или ниже.

...