我在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
正如您所看到的,我在stackoverflow中的一些教程中使用Application.WorksheetFunction.Median(amarelosMediana)
来获取中值,但它不起作用。
任何想法?
答案 0 :(得分:1)
编辑:修正了一些语法。您必须将所有突出显示的单元格传递到一个主范围,然后在主范围上运行该函数。
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