vba搜索行及其相关列,并突出显示条件是否满足

时间:2013-07-05 09:06:39

标签: vba search row highlight

下面的代码将搜索一行及其关联的列。 对于第7行,如果它是“N”或“TR”,并且如果所有条目在第12行下面都是空白,则代码将隐藏整个列。

但是,我仍需要一些帮助以获得帮助!

  1. 如果第7行中有“N”或“TR”。如果在任何单元格中写入的内容(而不是单独留下),我可以突出显示其关联第7行的单元格为黄色?

  2. 如果第7行中有“Y”,如果有任何单元格,我可以在第7行中以黄色突出显示其关联的单元格吗?

  3. 非常感谢你!特别感谢KazJaw上一篇关于simular问题的帖子

    Sub checkandhide()
    
    Dim r As Range
    
    Dim Cell As Range
    
    Set r = Range("A7", Cells(7, Columns.Count).End(xlToLeft))
    
    For Each Cell In r
    
        If Cell.Value = "N" Or Cell.Value = "TR" Then
            If Cells(Rows.Count, Cell.Column).End(xlUp).Row < 13 Then
                Cell.EntireColumn.Hidden = True
            End If
        End If
    Next
    
    End Sub
    

    attached example of spreadsheet

1 个答案:

答案 0 :(得分:0)

这里有一个改进的代码版本(虽然我可能需要进一步澄清......请参阅下文)。

Sub checkandhide()

    Dim r as Range, Cell As Range, curRange As Range

    Set r = Range("A7", Cells(7, Columns.Count).End(xlToLeft))

    For Each Cell In r

        Set curRange = Range(Cells(13, Cell.Column), Cells(Rows.Count, Cell.Column)) 'Range from row 13 until last row in the given column
        If Cell.Value = "N" Or Cell.Value = "TR" Then
            If Application.CountBlank(curRange) = curRange.Cells.Count Then
                Cell.EntireColumn.Hidden = True
            Else
                Cell.Interior.ColorIndex = 6 'http://dmcritchie.mvps.org/excel/colors.htm
            End If
        ElseIf Cell.Value = "Y" Then
            If Application.CountBlank(curRange) > 0 Then
                 Cell.Interior.ColorIndex = 6 'http://dmcritchie.mvps.org/excel/colors.htm
            End If
        End If
    Next

End Sub

我不确定我是否已正确理解您的说明,因此我将在此处描述此代码的确切作用;请注意任何不完全符合您要求的问题,以便我可以相应地更新代码:

它会查找范围r中的所有单元格。

  • 如果给定的单元格(可能位于第7行或其下方的任何其他行)满足其中一个条件,则会执行相应的操作。
  • 部分条件取决于curRangecurRange定义为第13行到电子表格结尾之间的所有行。
  • 具体条件:
    a)如果当前单元格的值是N或TR。如果curRange中的所有单元格都为空,则隐藏当前列。如果至少存在非空白单元格,则给定单元格的背景颜色将设置为黄色 b)如果当前单元格的值为Y并且{{1}}中至少有一个单元格不为空白,则背景单元格的背景颜色将设置为黄色。