【发布时间】:2020-10-27 11:04:38
【问题描述】:
我在Excel表格中生成一定范围内的随机数据,有一些随机生成的异常值(这部分工作)。
我想为这些值赋予颜色,绿色表示正常值,黄色表示异常,红色表示超出限制。
我用最后一列表示 pH 值测试了这种方法,因为查看这些值很容易判断哪个是好还是坏,而无需使用颜色。
我使用 if/else if 条件来按颜色格式化值。红色值很好,因为它在代码中是一个固定值,但是黄色和绿色搞砸了,因为我尝试过的所有东西要么全是绿色,要么全是黄色。
我的整个代码。
Sub TAB1()
'Déclaration
Dim Tableau(95, 5)
Dim r1, r2, r3, r4 As Double 'random variables
Dim vNH4g, vNH4y, vNH4r, vNKg, vNKy, vNKr, vNGg, vNGy, vNGr, vpHg, vpHy, vpHr As Double
'v for value, g for green (0<v<80% of max value or +/-5%), y for yellow (80<v<99 or +/- 5<v<10%), r for red (100% and +)
Dim NH4fv, NKfv, NGfv, pHfv As Double
'fv for final value
Randomize
'Enregistrement des valeurs dans le tableau
For i = 0 To 95
'Variables randoms
r1 = Rnd * 100 + 1
r2 = Rnd * 100 + 1
r3 = Rnd * 100 + 1
r4 = Rnd * 100 + 1
'Variables pour remplir tableau
vNH4g = Int((10.5 - 4.75) * Rnd + 4.75)
vNH4y = Int((11 - 4.5) * Rnd + 4.5)
vNH4r = Int((11 - 4.5) * Rnd + 11)
vNKg = Int((12.6 - 6.65) * Rnd + 6.65)
vNKy = Int((13.2 - 6.3) * Rnd + 6.3)
vNKr = Int((13.2 - 6.3) * Rnd + 13.2)
vNGg = Int((57.75 - 52.25) * Rnd + 52.25)
vNGy = Int((60.5 - 49.5) * Rnd + 49.5)
vNGr = Int((60.5 - 49.5) * Rnd + 60.5)
vpHg = ((6.7 - 6.2) * Rnd + 6.2)
vpHy = ((7.37 - 5.58) * Rnd + 5.58)
vpHr = 8.5
'Heure
Tableau(i, 0) = Range("A" & i + 2)
'N-NH4+
If r3 < 80 Then Range("B" & i + 2) = vNH4g
If 80 < r3 < 90 Then Range("B" & i + 2) = vNH4y
If 90 < r3 Then Range("B" & i + 2) = vNH4r
Tableau(i, 1) = Range("B" & i + 2)
'NK
If r3 < 80 Then Range("C" & i + 2) = vNKg
If 80 < r3 < 90 Then Range("C" & i + 2) = vNKy
If 90 < r3 Then Range("C" & i + 2) = vNKr
Tableau(i, 2) = Range("C" & i + 2)
'NG
If r3 < 80 Then Range("D" & i + 2) = vNGg
If 80 < r3 < 90 Then Range("D" & i + 2) = vNGy
If 90 < r3 Then Range("D" & i + 2) = vNGr
Tableau(i, 3) = Range("D" & i + 2)
'pH
If r4 <= 80 Then Range("E" & i + 2) = vpHg
If 80 < r4 <= 90 Then Range("E" & i + 2) = vpHy
If r4 > 90 Then Range("E" & i + 2) = vpHr
Tableau(i, 4) = Range("E" & i + 2)
pHfv = Range("E" & i + 2)
If pHfv = vpHr Then Range("E" & i + 2).Interior.Color = vbRed Else If vpHy <= pHfv < vpHy Then Range("E" & i + 2).Interior.Color = vbYellow Else If vpHg <= pHfv < vpHg Then Range("E" & i + 2).Interior.Color = vbGreen
Next
End Sub
【问题讨论】:
-
很难从中看出究竟是什么问题。不能使用条件格式吗?