如果单元格突出显示

时间:2018-02-14 03:05:00

标签: excel vba excel-vba excel-formula excel-2010

我有一张桌子,我想要计算一行中突出显示的单元格数量?

我试过寻找一个公式。我试着在有色单元格上获得COUNT-IF。

我猜你需要某种V.B.A.代码,因为没有公式(否则我不会在这里)

获取突出显示的细胞计数的任何选项?

4 个答案:

答案 0 :(得分:0)

我不认为有一个像vlookup,sum,countif等直接的公式。所以不幸的是它需要一个宏。

创建一个宏,这是我使用的代码:

Sub COUNT_HIGHLIGHTS()
'
' COUNT_HIGHLIGHTS
'


'Defining variables
Dim LastRow As Long, Count As Integer


'Getting a number value for the number of rows in the table (as this can vary on table size)
LastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row


'For loop to loop through rows
For i = 2 To LastRow
'Count is the number of cells in the row which are highlighted
Count = 0
'For loop for cells within the row (My table always has 36 cells)
For j = 5 To 36
'If statement to check if cell is highlighted
If Cells(i, j).Interior.Color = 65535 Then
'Add +1 to count ever time a highlighted cell is found
Count = Count + 1
End If
Next j
'find cell at the end of the row and add the count
Cells(i, 37).Select
Selection.Value = Count
Next i
End Sub

一旦完成,你会在最后得到一个专栏

第1栏|第2栏|第3栏| ......列在你的桌子外面 ColValue 1 | ColValue2 | ColValue3 | ....... 5(如果表中的5个单元格突出显示)

然后只需将表格过滤到您为0以外的所有内容创建的计数值

希望这有帮助

答案 1 :(得分:0)

您可能希望使用UDF(用户定义函数)。这是一个。它将计算所有不是没有颜色的细胞,无论它们具有哪种颜色。

Function HighLightCount(Target As Range) As Integer
    ' 14 Feb 2018

    Dim Cell As Range
    Dim Fun As Integer

    For Each Cell In Target
        Fun = Fun - Int(Cell.Interior.Color <> 16777215)
    Next Cell
    HighLightCount = Fun
End Function

将代码安装在标准代码模块中(默认情况下为Module1,直到您更改名称)。从工作表中调用函数,就像普通的Excel函数一样,例如,

=HighLightCount(A2:J2)

您可以像其他任何单元一样将公式复制/粘贴到其他单元格。您也可以将其嵌入Excel的内置函数中,例如

=IF(HighLightCount(A6:J6)>2,SUM(A6:D6),SUM(E6:J6))

答案 2 :(得分:0)

如果您想按特定颜色搜索单元格,以下UDF会对您有所帮助。

SearchRange

RefCellColor是您搜索的范围,SearchRange是您在 import {Injectable} from '@angular/core'; @Injectable() export class CommonService { commonFunction(list: any[], obj: any, key: string): number { // Your logic here. //return your logic varibale } } 查找的颜色格式的参考单元格。

答案 3 :(得分:0)

是一种在没有VBA的情况下执行此操作的方法 - 但是它非常混乱,并且在命名范围内需要“工作”行和Excel4宏。我只是为了完整性而详述。

步骤1:创建一个名为“Background_Below”的命名范围(FORMULAS&gt; NAME MANAGER),并按照以下内容进行操作:=GET.CELL(63,INDIRECT("r[-1]c",FALSE))

步骤2:在下面的行上添加一个工作行,以便计算突出显示的单元格,并将公式=Background_Below放入行中。 “无颜色”为0或“颜色”为> 0(实际值将是与上面单元格颜色最接近的xlColorIndex值)

步骤3:执行工作行> 0

COUNTIF

正如我所说的那样,它很乱 - 至少9倍于10倍,你最好在VBA中使用用户自定义函数。但它有可能