如何使用条件生成VBA永久更改单元格的颜色?
我想根据规则永久更改单元格的颜色。我对每个列中的前2个值使用了条件格式。它应该改变顶部2个红色单元格的颜色,它做到了,但在那之后,我只需要复制和粘贴单元格的颜色,而不是颜色背后的实际公式。当我检查单元格的格式时,它说没有背景颜色。我需要复制这些颜色,并将它们粘贴到另一系列产品上,仅限于颜色。我向一位朋友要了一个宏,这是他为我创建的,但它的作用与条件格式化相同:如何使用条件生成VBA永久更改单元格的颜色?,vba,excel,encoding,formatting,Vba,Excel,Encoding,Formatting,我想根据规则永久更改单元格的颜色。我对每个列中的前2个值使用了条件格式。它应该改变顶部2个红色单元格的颜色,它做到了,但在那之后,我只需要复制和粘贴单元格的颜色,而不是颜色背后的实际公式。当我检查单元格的格式时,它说没有背景颜色。我需要复制这些颜色,并将它们粘贴到另一系列产品上,仅限于颜色。我向一位朋友要了一个宏,这是他为我创建的,但它的作用与条件格式化相同: Sub SortColoredCells() Dim rng2 As Range For Each rng2 In Ac
Sub SortColoredCells()
Dim rng2 As Range
For Each rng2 In ActiveSheet.UsedRange.Columns
c_name = GetColumnLetter(rng2.Cells.Column)
ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort.SortFields.Add(Range(c_name & "2:" & c_name & "1000"), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, 0, 0)
With ActiveWorkbook.Worksheets(ActiveSheet.Name).Sort
.SetRange Range(c_name & "1:" & c_name & "1000")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Next
End Sub
谢谢你的帮助 此代码将顶部两行的颜色更改为红色。右键单击“工作表”选项卡,选择“查看代码”,然后将其粘贴到此处,然后按F5运行代码:
Sub main()
'loop thru columns
For i = 1 To UsedRange.Columns.Count
'look for top values in each column cell by cell
Set Rng = Sheets("Ranked").UsedRange.Columns(i).Cells
'reset parameters
a = 0 'top 1 value
b = 0 '2nd top value
Set cella = Nothing
Set cellb = Nothing
For Each cell In Rng
If IsNumeric(cell) = True Then
If cell.Value > b Then
If cell.Value > a Then
b = a
Set cellb = cella
a = cell.Value
Set cella = cell
Else
b = cell.Value
Set cellb = cell
End If
End If
End If
Next cell
'color the cells
If Not cella Is Nothing Then cella.Interior.Color = vbRed
If Not cellb Is Nothing Then cellb.Interior.Color = vbRed
Next i
End Sub
输出
“我想根据一条规则永久更改单元格的颜色。”这条规则是什么?我想独立地将每列的前2个值涂成红色。我不太擅长编程,所以我很想听听你的想法。非常感谢。然后我只需要复制颜色,但通过条件格式化,我不能像手动给单元格着色那样只粘贴颜色。将颜色复制到哪里?我正在写论文,我需要应用动量策略。因此,我需要复制彩色单元格,并将它们粘贴到前一个周期的另一个数据范围中,这将在不改变其值的情况下为第二个数据集的单元格着色。