用VBA实现Excel公式
需要公式将一列中的文本匹配到不同工作表中的文本,并计算高亮显示的单元格。这与执行sumif类似,但我将返回高亮显示的单元格计数,而不是在静态列中返回数值 我已经成功地编写了VBA来计算给定列中突出显示的单元格,但现在必须进行名称匹配。也就是说,如果列A1:A50中的名称与表2列J1:J52中的名称匹配,则返回表2列X中高亮显示的单元格计数 突出显示单元格的计数公式:用VBA实现Excel公式,vba,excel,Vba,Excel,需要公式将一列中的文本匹配到不同工作表中的文本,并计算高亮显示的单元格。这与执行sumif类似,但我将返回高亮显示的单元格计数,而不是在静态列中返回数值 我已经成功地编写了VBA来计算给定列中突出显示的单元格,但现在必须进行名称匹配。也就是说,如果列A1:A50中的名称与表2列J1:J52中的名称匹配,则返回表2列X中高亮显示的单元格计数 突出显示单元格的计数公式:countbycolor('sheet2'!J4:J1847,A52) VBA: 为标准范围添加参数并实现应用程序。Countif应
countbycolor('sheet2'!J4:J1847,A52)
VBA:
为标准范围添加参数并实现
应用程序。Countif
应该足够了
Function CountByColorAndName(InputRange As Range, NameRange As Range, ColorRange As Range) As Long
Dim cl As Range, TmpCount As Long, ColorIndex As Integer
Application.Volatile
ColorIndex = ColorRange.Interior.ColorIndex
TmpCount = 0
On Error Resume Next
For Each cl In InputRange.Cells
If cl.Interior.ColorIndex = ColorIndex and _
cbool(application.countif(NameRange , cl.value)) then _
TmpCount = TmpCount + 1
Next cl
CountByColor = TmpCount
End Function
示例语法:
=CountByColorAndName('sheet2'!J4:J1847, A1:A50, A52)
由于您对情况的描述同时涉及Sheet2列J1:J52和“Sheet2”,因此有点混乱!J4:J1847。如果这不合适,请澄清
在工作表和VBA中,实际上比更有效。这将减少一些计算负载
For Each cl In InputRange.Cells
If cl.Interior.ColorIndex = ColorIndex then _
if not iserror(application.match(cl.value, NameRange , 0)) then _
TmpCount = TmpCount + 1
Next cl
A1:A50包含50个单元,以对照J1:J52(包含52个单元)进行检查。您是想查看A1中的文本是否包含在J1:J52中的任何位置,还是想检查A1文本是否等于J1文本?如果存在,则返回count.mix,这是因为除了使用VBA之外,我找不到任何其他方法来计算彩色单元格。如果有一种方法可以满足我的需要(匹配名称和计数彩色单元格),而不使用VBA,那么我一定会尝试一下。老实说,我没有尝试过使用
背景色名称,但只使用字体颜色
,如果您愿意,您可以尝试使用它,看看它是否有效?谢谢。我将尝试两种解决方案。你在J栏发现我的描述错误是对的;J4:J1847是正确的。
For Each cl In InputRange.Cells
If cl.Interior.ColorIndex = ColorIndex then _
if not iserror(application.match(cl.value, NameRange , 0)) then _
TmpCount = TmpCount + 1
Next cl