我在MS excel中制作了一个大型excel数据表,并且我的错误添加了其中的一些重复数据,不需要在excel数据表中每6、7、7位的数据,我想删除这些行。
我已经搜索了所有的Google网站,并且搜索到了stackoverflow,试图在mysqlworkbench中导入数据并应用操作,但没有任何效果。
我只想从我的3000多行Excel工作表中删除第6和7行为了清楚起见,我附加了一个代码片段,黄色只是由我完成,以表明需要删除这些行。任何帮助将不胜感激
=mod(row(),7)
>1
的过滤器GoTo Special Visible Cells Only
或者,如果要重复的话,也可以使用Power Query来实现相同的算法。
在PQ中-添加从零开始的索引列-添加带有公式的自定义列:Number.Mod([Index],7)
-通过取消选择5
和6
来过滤自定义列-删除索引和自定义列
所有操作都可以通过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"
编辑
如果您真正想做的是删除Sat
和Sun
,则帮助器列公式应为:
=text(a2,"ddd")
并通过取消选择Sat
和Sun
进行过滤
对于快速的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
更改为更高或更低。