Vba 求和并删除重复行
我需要一个显示DriverName和Duration列的表,其他每一列都可以删除。必须删除所有重复项,并对每个驱动程序的持续时间进行汇总 我已经为此挣扎了一段时间,下面是我尝试使用的代码。它需要在Vba中完成 如果有人能帮忙,我将不胜感激Vba 求和并删除重复行,vba,excel,Vba,Excel,我需要一个显示DriverName和Duration列的表,其他每一列都可以删除。必须删除所有重复项,并对每个驱动程序的持续时间进行汇总 我已经为此挣扎了一段时间,下面是我尝试使用的代码。它需要在Vba中完成 如果有人能帮忙,我将不胜感激 Sub MG02Sep59 Dim Rng As Range, Dn As Range, n As Long, nRng As Range Set Rng = Range(Range("D2"), Range("D" & Rows.Count).End
Sub MG02Sep59
Dim Rng As Range, Dn As Range, n As Long, nRng As Range
Set Rng = Range(Range("D2"), Range("D" & Rows.Count).End(xlUp))
With CreateObject("scripting.dictionary")
.CompareMode = vbTextCompare
For Each Dn In Rng
If Not .Exists(Dn.Value) Then
.Add Dn.Value, Dn
Else
If nRng Is Nothing Then Set nRng = _
Dn Else Set nRng = Union(nRng, Dn)
.Item(Dn.Value).Offset(, 3) = .Item(Dn.Value).Offset(, 3) + Dn.Offset(, 3)
End If
Next
If Not nRng Is Nothing Then nRng.EntireRow.Delete
End With
End Sub
一般来说,你使用字典的想法可能是个好主意。但是,我没有看到如何向其传递密钥,因此这是一个快速解决方案:
Option Explicit
Public Sub TestMe()
Dim colCount As Long
Dim myCell As Range
Dim counter As Long
colCount = Cells.Find(What:="*", After:=Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
For counter = colCount To 1 Step -1
If Cells(4, counter) <> "DriverName" And Cells(4, counter) <> "Duration" Then
Columns(counter).Delete
End If
Next counter
End Sub
选项显式
公共子TestMe()
淡漠的寒冷与漫长的岁月一样
暗淡的迈塞尔山脉
昏暗的柜台一样长
colCount=Cells.Find(What:=“*”,After:=单元格(1,1),LookIn:=xlformals,LookAt:=_
xlPart,SearchOrder:=xlByColumns_
搜索方向:=xlPrevious_
MatchCase:=False)。列
对于计数器=colCount到1步骤-1
如果单元格(4,计数器)“DriverName”和单元格(4,计数器)“Duration”,则
列(计数器)。删除
如果结束
下一个柜台
端接头
代码假定表的标题始终是第4行。一旦这个假设准备好,借助于,我们用数据定义最后一列,并开始从它到第1列的循环,检查单元格(4,计数器)
是否不是驱动器名
或持续时间
。如果不是,我们将其删除
您可以考虑稍后声明工作表,只要当前代码将始终引用ActhEsHeTET.< /P> 将所有内容设置为联合范围确实是一个更好的主意,因为这样删除操作只需执行一次,而且速度更快(但是,如果列数少于100,则不会明显)
关于“删除重复项”,请看这里-。@RossH-我明白了。看看编辑,您应该能够轻松地删除重复项。关于驱动程序的求和,使用字典遍历行是一个好主意。我是初学者,所以您可以给我演示一个求和持续时间值的示例吗?@RossH-求和持续时间值就像求和其他值一样-您使用
+
符号。诀窍在于,最后必须将结果格式化回duration。像这样的范围(“F16”).NumberFormat=“hh:mm:ss”
。