如何根据同一行中的其他单元格动态选择特定单元格

时间:2013-12-04 16:54:50

标签: excel vba sql

类似于如何在电子表格中向下拖动单元格,它将继续引用该公式的同一行中的单元格。我需要找到一种方法,我可以在电子表格中搜索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

谢谢,

2 个答案:

答案 0 :(得分:0)

你应该可以使用你的细胞对象吗?无需Select任何内容。

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

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

cell.EntireRow.Hidden = True

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

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

答案 1 :(得分:0)

自动过滤器可以工作,但很明显,你没有隐藏单元格,因为你只能隐藏完整的列或行。您只是模糊了显示,但仍然可以在公式栏中看到内容。

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