删除大型Microsoft Excel数据表中的第6个第7个连续行

问题描述 投票:0回答:2

我在MS excel中制作了一个大型excel数据表,并且我的错误添加了其中的一些重复数据,不需要在excel数据表中每6、7、7位的数据,我想删除这些行。

我已经搜索了所有的Google网站,并且搜索到了stackoverflow,试图在mysqlworkbench中导入数据并应用操作,但没有任何效果。

我只想从我的3000多行Excel工作表中删除第6和7行为了清楚起见,我附加了一个代码片段,黄色只是由我完成,以表明需要删除这些行。enter image description here任何帮助将不胜感激

excel database worksheet
2个回答
1
投票
  • 使用公式创建帮助列:

=mod(row(),7)
  • >1的过滤器
  • 选择列和GoTo Special Visible Cells Only
  • 复制并粘贴到新位置。

或者,如果要重复的话,也可以使用Power Query来实现相同的算法。

在PQ中-添加从零开始的索引列-添加带有公式的自定义列:Number.Mod([Index],7)-通过取消选择56来过滤自定义列-删除索引和自定义列

所有操作都可以通过GUI完成。

M代码

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"

编辑

如果您真正想做的是删除SatSun,则帮助器列公式应为:

=text(a2,"ddd")

并通过取消选择SatSun进行过滤


0
投票

对于快速的vba解决方案,我记得this question可以加速隐藏大量行的子程序。

这很容易通过一个简单的计数器隐藏第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更改为更高或更低。

© www.soinside.com 2019 - 2024. All rights reserved.