在彩色范围内查找中位数
Find Median in a colored range
我有以下问题需要在 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
如您所见,我按照 Whosebug 中的一些教程中所述使用 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
我有以下问题需要在 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
如您所见,我按照 Whosebug 中的一些教程中所述使用 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