我想知道如何根据第1列中的值更改多行的行颜色。假设在A1到A5中我的值为“100”而A6到A10我的值为“150”,我希望能够将第1行到第5行的颜色更改为蓝色,因为A1到A5的值为“100”,依此类推,A6到A10为另一种颜色,因为值为“150”。如果值相同,我需要将颜色更改为相同。我的代码可以工作,但每次值改变时,它只会变为所有蓝色而不是不同的颜色。
编辑答案:
Dim i As Long
Dim holder As String
Set UsedRng = ActiveSheet.UsedRange
FirstRow = UsedRng(1).Row
LastRow = UsedRng(UsedRng.Cells.Count).Row
r = WorksheetFunction.RandBetween(0, 255)
g = WorksheetFunction.RandBetween(0, 255)
b = WorksheetFunction.RandBetween(0, 255)
holder = Cells(FirstRow, 1).Value
For i = FirstRow To LastRow '<--| loop through rows index
myColor = RGB(r, g, b)
If Cells(i, 1).Value = holder Then
Cells(i, 1).EntireRow.Interior.Color = myColor
Else
holder = Cells(i, 1).Value
r = WorksheetFunction.RandBetween(0, 255)
g = WorksheetFunction.RandBetween(0, 255)
b = WorksheetFunction.RandBetween(0, 255)
Cells(i, 1).EntireRow.Interior.Color = RGB(r, g, b)
End If
Next i
答案 0 :(得分:1)
你可以从这段代码开始
Sub main()
Dim myCol As Long, i As Long
For i = 1 To 10 '<--| loop through rows index
With Cells(i, 1) '<--| reference cell at row i and column 1
Select Case .value
Case 100
myCol = vbBlue
Case 150
myCol = vbRed
Case Else
myCol = vbWhite
End Select
.EntireRow.Interior.Color = myCol
End With
Next i
End Sub
答案 1 :(得分:0)
这是如何检查单元格A1到A10的值为100,如果所有单元格都包含100,则用蓝色绘制从1到10的所有行。
$content_array = explode("\n", $file_content);
您可以为下一个设置行使用相同的逻辑。
我没有提供整个代码的原因是你可以自己练习。
答案 2 :(得分:0)
根据您对我的评论的回复,我假设您既不知道第一列中的确切值,也不知道有多少不同的值。
为了使我的答案不太复杂,我进一步假设第一列只包含非负数。如果不是这种情况,您只需将列中的数据类型映射到该数字范围。
根据上面的ssumption,您可以使用以下代码。
Public Sub SetRowColorBasedOnValue()
Dim firstColumn As Range
Set firstColumn = ActiveSheet.UsedRange.Columns(1)
Dim minValue As Double
Dim maxValue As Double
minValue = Application.Min(firstColumn)
maxValue = Application.Max(firstColumn)
Dim cell As Range
Dim shade As Double
For Each cell In firstColumn.Cells
If Not IsEmpty(cell) Then
shade = (CDbl(cell.Value2) - minValue) / (maxValue - minValue)
SetRowColorToShade cell, shade
End If
Next
End Sub
Private Sub SetRowColorToShade(ByVal cell As Range, ByVal shade As Double)
With cell.EntireRow.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent2
.TintAndShade = shade
.PatternTintAndShade = 0
End With
End Sub
不可否认,颜色可以非常相似。如果您使用的是Excel 2013或更高版本,则可以使用cell.EntireRow.Interior.Color = HSL(hue,saturation,chroma)
而不是设置色调和阴影来根据值更改色调。这提供了更多不同的颜色。
答案 3 :(得分:0)