Arrays 如果满足条件,则需要突出显示数组。但是怎么做呢?

Arrays 如果满足条件,则需要突出显示数组。但是怎么做呢?,arrays,vba,foreach,formatting,range,Arrays,Vba,Foreach,Formatting,Range,我有一个单元格,其中包含要用特定文本过滤的数据(预过滤)。只需使用满足特殊单元格数组的单元格值高亮显示特定单元格 Sub EmailDataPrep() Dim r As Range Dim lastrow As Long Dim MyArray() As Variant MyArray = Range("F3:F200") currow = Sheets("Current_Emails")

我有一个单元格,其中包含要用特定文本过滤的数据(预过滤)。只需使用满足特殊单元格数组的单元格值高亮显示特定单元格

Sub EmailDataPrep()

    Dim r As Range 
    Dim lastrow As Long 
    Dim MyArray() As Variant
    
    MyArray = Range("F3:F200")
    
    currow = Sheets("Current_Emails").Range("F3")
    
    lastrow = Cells(Rows.Count, "F3").End(xlUp).row
    
    For Each r In Range("F" & currow & "F" & lastrow)
    
        If r.Value = MyArray Then
    
            r.Interior.Color = "Green"
    
        End If
  
    Next r

End Sub
突出显示匹配单元格
  • 调整常量部分中的值
  • 假设工作簿中有两个工作表包含此代码
  • 源列范围的值将写入数组。通过
    目标(列)范围的单元格的循环将尝试根据数组匹配每个单元格值。如果找到匹配项,则对当前单元格的引用将在组合范围内组合。最后,
    组合范围的所有(匹配)单元格将高亮显示
选项显式
Sub-Dataprep()
"来源:
常量sName为String=“Sheet1”***
Const sFirst As String=“F3”
“目的地
Const dName As String=“当前电子邮件”
Const dFirst As String=“F3”
'工作簿
将wb设置为工作簿:设置wb=ThisWorkbook
'定义源范围并将其值写入数据数组。
变暗srg As范围
带wb.工作表(sName).范围(sFirst)
暗sCell As范围
设置sCell=.Resize(.Worksheet.Rows.Count-.Row+1)_
.Find(“*”,xlFormulas,,xlPrevious)
如果sCell为空,则退出Sub
设置srg=.Resize(sCell.Row-.Row+1)
以
Dim数据作为变量:数据=srg.值
'定义目标范围。
变暗drg As范围
带wb.工作表(dName).范围(dFirst)
Dim dCell As范围
设置dCell=.Resize(.Worksheet.Rows.Count-.Row+1)_
.Find(“*”,xlFormulas,,xlPrevious)
如果dCell为Nothing,则退出Sub
设置drg=.Resize(dCell.Row-.Row+1)
以
'循环目标范围的单元格并尝试查找
'数据数组中的匹配项。如果找到,则将其引用合并到匹配的单元格
“在组合范围内。
调暗crg As范围
对于drg单元格中的每个数据单元格
如果是数字(Application.Match(dCell.Value,Data,0)),则
如果crg什么都不是,那么
设置crg=dCell
其他的
设置crg=Union(crg,dCell)
如果结束
如果结束
下一个dCell
'一次性高亮显示匹配单元格(组合范围的单元格)。
如果不是crg,那么什么都不是
crg.Interior.Color=vbGreen
如果结束
端接头

您的代码中有哪些错误?代码中有很多问题
MyArray=Range(“F3.F200”)
将失败,应该是
而不是
currow=Range(“F3”)
隐式引用
活动表
.MyArray
没有意义,为什么是句号<代码>Cells.Interior.Color=“Green”
是所有单元格。缺少
结束If
。不能将单个单元格的值与数组进行比较。您需要一个循环或
应用程序。Match
,它在与数组一起使用时速度很慢。它给出了一个错误,我们的r下一个错误。我现在对代码进行了如下修改。
如果r.Value=MyArray,则
无效。不能像那样直接将单个单元格与数组进行比较。