excel根据单元格的情况显示或隐藏行

我有一个Excel,我有一个macrosbutton。 function简单。 我有4个产品和他们的function。 我想要做的是,必须显示所有的差异或相似性的button – 尤其是因为名单是巨大的。

所以当有人点击显示相似性时,它将只显示具有相同值的行,例如第2行,R7,R8,R10,R11当他们点击显示差异时 – R3,R4,R5等等。

这是我的尝试。

Sub BtnShowdifferences_Click() Dim R As Range("$B$2:$D$11") For Each row In R.Rows For Each cell in row.cells Dim nextcell = cell + 1 If (cell.Value) == (nextcell.Value) Then cell.EntireRow.Hidden = True End If Next Next End Sub 

我如何检查整行中的所有单元格的值(不包括第一个单元格)。

我如何检查整行中的所有单元格的值(不包括第一个单元格)。

这是一个function。 它可以正常使用或作为UDF使用。

 Function allCellsEqual(r As Range) As Boolean allCellsEqual = Application.CountIf(r, r.Cells(1).Value2) = r.Cells.count End Function 

您可以在每个单独的行(实际数据,而不是整行)上使用它,并相应地采取行动。 如果你不想让它成为一个函数,你仍然可以直接在你的例程中使用逻辑:

 Dim R As Range, row as Range Set R = Range("$B$2:$D$11") '<-- preferably qualify to sheet, ie sheet1.Range(...) For Each row In R.Rows ' row.EntireRow.Hidden = Not allCellsEqual(row) ' or directly: row.EntireRow.Hidden = Application.CountIf(row, row.Cells(1).Value2) <> row.Cells.count Next 

这将隐藏不同值的行。 要隐藏等值的行,只需使用=而不是<>

你到达那里,但是一些语法是closures的(就像你只需要在VBA中比较值)。

这个怎么用?

 Sub BtnShowdifferences_Click() Dim R As Range, row As Range Dim iRow As Long Set R = Range("$B$2:$D$11") For Each row In R.Rows If row.row <> R.Rows(1).row Then With row If .Cells(1) = .Cells(2) And .Cells(2) = .Cells(3) And .Cells(3) = .Cells(1) Then row.EntireRow.Hidden = True End If End With End If Next row End Sub 

但是看看它,我确定有一个更快的/不同的非VBA解决scheme。 也许是一个filter的帮手列?