Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel:如何复制/粘贴条件格式,就像条件是一个;价值观;?_Excel_Vba_Conditional Formatting - Fatal编程技术网

Excel:如何复制/粘贴条件格式,就像条件是一个;价值观;?

Excel:如何复制/粘贴条件格式,就像条件是一个;价值观;?,excel,vba,conditional-formatting,Excel,Vba,Conditional Formatting,就像Excel允许您将单元格复制并粘贴为值一样(忽略格式设置),我如何才能做相反的事情 在本例中,我希望保留黄色条件格式,即使在我删除列R之后。因此,在某种程度上,将条件保留为Q列单元格中的“值” 目前,我必须隐藏列R,以便保留条件格式。如果我完全删除该列,则会丢失格式,因为它基于公式 i、 e 我希望Excel有一个拷贝/粘贴颜色正如Brad Dixon所说,VBA是唯一的解决方案 Public Sub HighlightColumn() Dim tbl As ListObject

就像Excel允许您将单元格复制并粘贴为
值一样(忽略格式设置),我如何才能做相反的事情

在本例中,我希望保留黄色条件格式,即使在我删除列R之后。因此,在某种程度上,将条件保留为Q列单元格中的“值”

目前,我必须隐藏列R,以便保留条件格式。如果我完全删除该列,则会丢失格式,因为它基于公式

i、 e

我希望Excel有一个拷贝/粘贴颜色

正如Brad Dixon所说,VBA是唯一的解决方案

Public Sub HighlightColumn()
    Dim tbl As ListObject
    Dim wsCell As Range
    Dim rw As Range

    'loop through each row
    Set tbl = ActiveSheet.ListObjects("Table_1")  'my data is inside a table
    For Each rw In tbl.Range.SpecialCells(xlCellTypeVisible).Rows
        Set wsCell = rw.Cells(1, 17)
        If rw.Cells(1, 18) = "*" Then
            With wsCell
                .Interior.Color = vbYellow
            End With
        End If
    Next rw

    'the golden moment!
    tbl.Range(, 18).EntireColumn.Delete
End Sub

粘贴特殊格式有什么问题?也许我错过了什么。它已经存在了。@BradDixon试试看。英雄联盟在引用列被删除后,它们仍然会消失。哦,好的,我现在明白了。是的,条件格式将对您起作用,但常规格式将起作用。我想我们可以用VBA
rw.Cells(1,17)为您解决这个问题。Interior.Color=rw.Cells(1,17)。DisplayFormat.Interior.Color
将CF填充颜色作为常规填充应用,在不再应用CF填充后仍然保留。@TimWilliams抱歉,我不明白您的意思,因为上面的代码起作用了,不管你提到的两个选项中的哪一个被应用。我不是说你的代码是错误的,只是给了你另一个选项,可以避免硬编码填充颜色。。。
Public Sub HighlightColumn()
    Dim tbl As ListObject
    Dim wsCell As Range
    Dim rw As Range

    'loop through each row
    Set tbl = ActiveSheet.ListObjects("Table_1")  'my data is inside a table
    For Each rw In tbl.Range.SpecialCells(xlCellTypeVisible).Rows
        Set wsCell = rw.Cells(1, 17)
        If rw.Cells(1, 18) = "*" Then
            With wsCell
                .Interior.Color = vbYellow
            End With
        End If
    Next rw

    'the golden moment!
    tbl.Range(, 18).EntireColumn.Delete
End Sub