在彩色范围内查找中位数



我在 Excel 2010 VBA 代码中有以下问题要解决

Range("A:A")中,我有很多数值。只有其中一些以颜色突出显示。 ( index = 6 [黄色])。我需要 Excel VBA 代码来获取黄色突出显示值之间的中位数,并将未突出显示的单元格留在计算之外。

我已经进行了代码尝试,但它总是给我突出显示范围内的第一个值,而不是范围的中值。

Dim amarelosMediana As Range
Dim mediana As Double
For Each amarelosMediana In Range([a1], Cells(Rows.count, "A").End(xlUp))
    If amarelosMediana.Interior.ColorIndex = 6 Then
        mediana = Application.WorksheetFunction.Median(amarelosMediana)
    End If
Next amarelosMediana
ActiveSheet.Range("C3") = "Mediana no intervalo de confianca"
ActiveSheet.Range("D3") = mediana

如您所见,我按照堆栈溢出中的一些教程中所述使用Application.WorksheetFunction.Median(amarelosMediana)来获取中值,但它不起作用。

任何想法??

编辑:修复了一些语法。 您必须将所有突出显示的单元格传递到一个主范围中,然后在主范围上运行该功能。

Sub Macro1()
Dim amarelosMediana As Range
Dim tempRng As Range
Dim mediana As Double
Set tempRng = Nothing
For Each amarelosMediana In Range([a1], Cells(Rows.Count, "A").End(xlUp))
    If amarelosMediana.Interior.ColorIndex = 6 Then
        If tempRng Is Nothing Then
            Set tempRng = amarelosMediana
        Else
            Set tempRng = Union(tempRng, amarelosMediana)
        End If
    End If
Next amarelosMediana
mediana = Application.WorksheetFunction.Median(tempRng)
ActiveSheet.Range("C3") = "Mediana no intervalo de confianca"
ActiveSheet.Range("D3") = mediana
End Sub

最新更新