如何在VBA中运行循环,以使序列看起来像绿色,粉红色?
因为当我使用此代码时,实际上只是粘贴所有数字1.而不增加。
ThisWorkbook.Sheets("Main").Range("E2:E" & iLast).FillDown
答案 0 :(得分:0)
这可能不是最干净的方法,但可以解决问题。
Sub InsertSequenceAndColours()
Dim ws As Worksheet
Dim rng As Range
Dim iLast As Integer
Dim i As Integer
Dim iSeq As Integer
Dim iColRGB(2, 3) As Integer
Dim iIncremColour As Integer 'used to determine the colour to use
Dim iColour As Integer
'set RGB Colours; change as needed
'colour 0 (green)
iColRGB(0, 1) = 146
iColRGB(0, 2) = 208
iColRGB(0, 3) = 80
'colour 1 (pink)
iColRGB(1, 1) = 255
iColRGB(1, 2) = 225
iColRGB(1, 3) = 236
'change to 0 if you want to start with colour 1 (pink)
iIncremColour = 1
'declare worksheet to work on
Set ws = ThisWorkbook.Worksheets(Sheet1.Name)
With ws
'find last row
iLast = .Cells(.Rows.Count, "C").End(xlUp).Row
'loop through column C
For i = 2 To iLast
iSeq = iSeq + 1
If .Cells(i, 3).Value <> .Cells(i - 1, 3).Value Then
iSeq = 1
iIncremColour = iIncremColour + 1
End If
'assign Seq. No. to cell (column E)
.Cells(i, 5).Value = iSeq
'find if iIncremColor is odd or even. output: 0 or 1
iColour = iIncremColour Mod 2
'assign colour to col C D E
.Range(Cells(i, 3), Cells(i, 5)).Interior.Color = _
RGB(iColRGB(iColour, 1), iColRGB(iColour, 2), iColRGB(iColour, 3))
Next i
End With
End Sub
通过找到第一次出现的“否”(Col C)来找出Seq“ 1”(Col E);序列“ 2、3”只是增量的(因此它也可以在3个以上的事件中起作用)。 颜色相同。对于每个“ Seq 1”,它增加一个数字。通过检查这个数字是奇数还是偶数来分配一种颜色。
请注意,我使用工作表代号来工作(如果您不熟悉它,请用google搜索),我强烈建议您这样做,因为即使您决定在excel中更改工作表的名称也可以使用。
当VBA请求使用工作表名称或索引时,可以使用codename.Name
或codename.Index
来欺骗它。
答案 1 :(得分:0)
通过数组进行访问
您可以填充一个数组并将其写回到您的目标范围:
Sub FlexibleRange()
Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Main") ' << change to your sheet name
Dim start As Long, last As Long, i As Long ' declare variables
start = 2: last = 100 ' <~~ change to your individual rows
Dim v: ReDim v(start To last, 1 To 1) ' variant datafield array, counter
For i = start To last
v(i, 1) = (i - start) Mod 3 + 1 ' assign values
Next i
ws.Range("E" & start & ":E" & last) = v ' write numbers to column E
End Sub
答案 2 :(得分:0)
我必须解决它。
我使用此公式
=MOD(ROW()-2,3)+1.
谢谢大家。感谢您的帮助。 <3