Excel 尝试将列中的单元格与数组进行比较,如果不匹配,则隐藏该单元格的行
正如标题所说,我有1800个名字的列表,我正试图缩小它们出现的次数。所以我制作了一个宏来计算它们,一个宏隐藏任何出现少于50次的宏,一个宏将可见列表复制到Sheet1。到目前为止,一切顺利。现在,通过这个宏,我想将列表从sheet1分配到一个数组,取消隐藏名称列表并重新隐藏所有没有列出列表的人。我已经使用VBA大约一周了,所以如果你对如何使用VBA有更简单的想法,请告诉我Excel 尝试将列中的单元格与数组进行比较,如果不匹配,则隐藏该单元格的行,excel,vba,Excel,Vba,正如标题所说,我有1800个名字的列表,我正试图缩小它们出现的次数。所以我制作了一个宏来计算它们,一个宏隐藏任何出现少于50次的宏,一个宏将可见列表复制到Sheet1。到目前为止,一切顺利。现在,通过这个宏,我想将列表从sheet1分配到一个数组,取消隐藏名称列表并重新隐藏所有没有列出列表的人。我已经使用VBA大约一周了,所以如果你对如何使用VBA有更简单的想法,请告诉我 Function in_array(my_array, my_value) As Boolean Dim i As Vari
Function in_array(my_array, my_value) As Boolean
Dim i As Variant
For i = LBound(my_array) To UBound(my_array)
If my_array(i) = my_value Then
in_array = True
Exit For
End If
Next
End Function
Sub UnHideRows()
Dim cell As Range
Dim rng As Range
Dim arr As Variant
Dim steve As Variant
Application.ScreenUpdating = False
arr = Sheets("Sheet1").Range("A1:A20")
'Range("E7:E1800").EntireRow.Hidden = False
For Each cell In Range("E7:E1800")
steve = in_array(arr, cell)
If steve = True Then
cell.EntireRow.Hidden = False
Else
cell.EntireRow.Hidden = True
End If
Next cell
' If cell.Value = arr.Value Then
' cell.EntireRow.Hidden = False
' Else
' cell.EntireRow.Hidden = True
' End If
'Next cell
Application.ScreenUpdating = True
End Sub
我在函数的If行上得到一个下标超出范围的错误
非常感谢 您只需进行一些编辑:
Function in_array(my_array, my_value) As Boolean
Dim i As Long
For i = LBound(my_array, 1) To UBound(my_array, 1)
If my_array(i, 1) = my_value Then
in_array = True
Exit For
End If
Next
End Function
您可以简化其余部分:
For Each cell In Range("E7:E1800").Cells
cell.EntireRow.Hidden = Not in_array(arr, cell.Value)
Next cell
您只需进行一些编辑:
Function in_array(my_array, my_value) As Boolean
Dim i As Long
For i = LBound(my_array, 1) To UBound(my_array, 1)
If my_array(i, 1) = my_value Then
in_array = True
Exit For
End If
Next
End Function
您可以简化其余部分:
For Each cell In Range("E7:E1800").Cells
cell.EntireRow.Hidden = Not in_array(arr, cell.Value)
Next cell
您正在传递一个二维数组,但在函数中仅将其视为一维数组。一列与一维不一样吗?不。它是一个二维数组,具有一列和与数据一样多的行。我是否可以进行更改,使其按我的意愿搜索数组?您正在传递一个二维数组,但在函数中仅将其视为一维数组。一列与一维不一样吗?不。它是一个二维数组,具有一列和与数据一样多的行。我是否可以进行更改,使其按我的意愿搜索数组?