摘要(tl; dr):我尝试创建隐藏行或不隐藏行的代码,代码应仅比较可见值。示例:取i = Rownumber,X = Colum:如果没有隐藏行,则代码应比较Xi与Xi-1的值。如果隐藏行i-1和i-2,则代码应该比较Xi与Xi-3的值。您事先不知道哪些行被隐藏。 Sample file
长:作为一个新手,我在这里跑了一圈。我在这个和其他论坛上广泛搜索,但我认为现在有点遥不可及。 如果有人能给我一个正确方向的暗示,我将非常感激:
目标:清除布局,同时不考虑隐藏的行。
效果是数据透视表可以轻松完成的,但我有一个共享工作簿,用户需要更新某些单元格,因此数据透视表已经用完了。
设置向上:
我尝试编写VBA代码:
如果按外部排序:
如果,则单元格Ei的值 = 值首先可见单元格abover E i 然后 单元格Ei = 字体白色
IF 细胞Ei的值 = 值第一个可见细胞E i-1 AND 的值Cell Fi = 值 first Visible Cell F i-1 然后 Cell Fi = font white
< / LI>同样的想法,但按内部人员排序
我的代码:
Private Sub CommandButton23_Click()
'ignore hidden rows above active cells to compare active cells with the first corresponding visible cell above
Dim sht As Worksheet
Dim LastRow As Long
Dim CurRow As Long
Set sht = ActiveWorkbook.Worksheets("2016")
'Find Last Row
LastRow = sht.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'compare with first visible cell above
i = 1
For CurRow = 6 To LastRow
If sht.Rows(CurRow - i).EntireRow.Hidden = False Then
If Range("E" & CurRow) = Range("E" & CurRow - 1) Then Range("E" & CurRow).Font.Color = vbGreen
If Range("E" & CurRow) = Range("E" & CurRow - 1) And Range("F" & CurRow) = Range("F" & CurRow - 1) Then Range("F" & i).Font.Color = vbGreen
Else: i = i + 1
End If
Next CurRow
End Sub
我的问题
代码适用于E列,但在没有隐藏任何行时不适用于F列。
代码没有考虑隐藏的行,这是练习的全部目的。
代码不会对排序/隐藏行中的更改做出反应。
帮助?
编辑:我成功地使用条件格式和聚合在外部排序,但在内部排序时它会分解一点。因此我在看VBA。