【问题标题】:How to dynamically select specific cells based on other cells in the same row如何根据同一行中的其他单元格动态选择特定单元格
【发布时间】:2013-12-05 03:33:47
【问题描述】:

类似于如果您在电子表格中向下拖动一个单元格,它将继续引用该公式同一行中的单元格。我需要找到一种方法,可以在电子表格的 I 列中搜索字母 Y,如果它在 I 列中找到 Y,它将选择同一行中 B 到 AR 列的单元格。然后只隐藏那些单元格而不是整行。这是我目前所拥有的:

Sub Macro1()
'Sub HideRows()
Dim cell As Range
For Each cell In Range("I1:I5000")
    If UCase(cell.Value) = "Y" Then
        Select (??? this is where I need to find help selecting the proper range.)
        Selection.NumberFormat = ";;;"
    End If
Next
Calculate
End Sub

谢谢,

【问题讨论】:

    标签: excel vba sql


    【解决方案1】:

    您应该能够使用您的单元格对象吗?不需要Select 任何东西。

    For Each cell In Range("I1:I5000")
        If UCase(cell.Value) = "Y" Then
            cell.NumberFormat = ";;;"
        End If
    Next
    

    关于隐藏单元格,我认为您不能隐藏单个单元格而不隐藏整行。

    cell.EntireRow.Hidden = True
    

    这将在 I 列中包含 Y 的行上将 B - H 列的单元格格式设置为 ;;;

    Sub test()
    
    Dim sht As Worksheet, cell As Range
    Dim rangeString As String
    
    Set sht = ActiveSheet
    
        For Each cell In sht.Range("I1:I5000")
            If UCase(cell.Value) = "Y" Then
    
                'Columns B --> H
                sht.Cells(cell.Row, 2).Resize(1, 7).NumberFormat = ";;;"
    
            End If
        Next cell
    End Sub
    

    【讨论】:

    • @pnuts 我需要使用 ;;; 隐藏单元格格式,因为我仍然需要显示 A 列,但不需要显示行上的任何其余数据。任何想法如何选择除 A 列中的单元格之外的每个单元格以使用 ;;; 进行格式化不使用 vba 显示?
    • @user3066795 你是说你只想将除A列之外的所有单元格格式设置为;;;吗?
    • @Sam 除 A 列外的所有单元格,仅在 I 列中包含“Y”的行中。如果 I 列中的单元格不包含“Y”,则该行中的单元格不应格式化为 ;;;
    • @user3066795 好的.. 我更新了我的答案。如果 I 列包含 Y,则该行将格式化为 ;;;(A 列除外)
    • @Sam 我得到一个编译错误参数不是可选的,它突出显示 .范围部分 sht.range() 。 NumberFormat = ';;;" 行。
    【解决方案2】:

    自动过滤器会起作用,但显然,您并没有隐藏单元格,因为您只能隐藏完整的列或行。您只是混淆了显示,但仍然可以在编辑栏中看到内容。

    Sub Macro1()
    
    'Sub HideRows()
    Dim cell As Range
    with Range("I1:I5000")
        .autofilter
        .autofilter field:=1,criteria1:="Y"
        .offset(1).resize(.rows.count-1).specialcells(xlCellTypeVisible).offset(0,-7).resize(, 43).NumberFormat = ";;;"
        .autofilter
    end with
    
    End Sub
    

    【讨论】:

    • 您可以使用 Selection.numberformat = ;;; 隐藏特定单元格我只需要弄清楚如何动态选择 I 列中包含 Y 的行中的单元格。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2018-03-23
    • 2013-10-26
    • 1970-01-01
    相关资源
    最近更新 更多