【发布时间】:2015-10-15 15:46:56
【问题描述】:
我在删除以下工作表中的重复单元格时遇到问题。 Col E 是小时,col F 是我想要组织的时间戳的分钟数。我想做的是在一小时内删除所有包含重复分钟的行,这样我就可以每 5 分钟获得一次电流和功率的读数。问题是,有时你会在一分钟内获得 5 个读数,有时是 6 个读数(因为读数是每 9、10 或 11 秒进行一次)。另一个问题是,我不能简单地删除一天内所有重复的单元格,因为模式每小时都会重复一次,因此如果我简单地选择所有单元格,我只剩下一小时的读数。
我在下面的代码中尝试的是通过双击第一个“E”单元格在一小时内删除所有具有双分钟值的行,该单元首先出现该小时。它在第一个小时 (0:00-0:55) 内正常工作,但对于后面的数字(小时),它开始删除其他行。 下一个合乎逻辑的步骤当然是删除一天内的所有双精度值。
整个事情不需要用户友好或交互,我只想过滤掉 5 分钟的阅读,如果没有别的,将它们粘贴到新的工作表中以供进一步分析。
这是工作表的printscreen,包含数据
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim clickedRow As Long
Dim clickedValue As Long
Dim currentValue As Long
Dim counter As Long
clickedRow = ActiveCell.Row
clickedValue = ActiveCell.Value
For i = clickedRow To (clickedRow + 100)
currentValue = Range("E" & i).Value
If (clickedValue = currentValue) Then
counter = counter + 1
Else
Exit For
End If
Next i
ActiveSheet.Range("A" & clickedRow, "Y" & counter).RemoveDuplicates Columns:=6, Header:=xlNo
End Sub
我尝试了另一件事,但没有证明有效,因为它隐藏了所有重复的单元格,没有遗漏一个:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim clickedRow As Long
Dim clickedValue As Long
Dim currentValue As Long
Dim zadnja As Long
Dim trenutna As Long
clickedRow = ActiveCell.Row
clickedValue = ActiveCell.Value
For i = clickedRow To (clickedRow + 100)
currentValue = Range("E" & i).Value
If (currentValue = clickedValue) Then
zadnja = 5
trenutna = Range("F" & i).Value
If (trenutna = zadnja) Then
Range("E" & i).EntireRow.Hidden = True
Else
End If
zadnja = trenutna
Else
Exit For
End If
Next i
End Sub
【问题讨论】:
-
我认为 Excel 的删除重复项功能对您不起作用,但您能否解释一下原因,以便我更好地了解如何提供帮助?
-
不,它不会,因为在分钟列“F”中,值 0、5、10、...、55 每小时重复 5 到 6 次。这是小时值为 1 的另一个打印屏幕:shrani.si/f/43/TU/1UedFbE2/untitled1.jpg
-
请原谅,因为我是社区的新手,但是有没有办法可以上传整个工作表?我在尝试发布图片时已经遇到了一些问题。谢谢 - 编辑:我将工作表上传到 Google 云端硬盘,您可以在 drive.google.com/file/d/0BzWlcx6eE4TbcENDU3VOVjVZalk/… 上查看它
-
小时和分钟都使用一个列对您来说会更容易吗? CEILING function 或 FLOOR function 之类的东西可以舍入到 5 分钟的间隔。例如
=FLOOR(C2, TIME(0, 5, 0)). -
吉普车,不确定这是否可行。我故意将两者分开,以便可以分别比较它们的值。如果您可能有用于类似问题的函数示例,我很乐意查看。谢谢