Excel - 复制条件格式,删除规则,保留格式

12

我知道通常你会在问题中展示你已经尝试过的内容,但这更像是一个“你有没有一个好的例程来完成这个任务?”的问题,我希望你能允许它存在...

我正在开发一个宏,它可以复制一个源工作表中的条件格式化单元格,并将它们粘贴到输出工作表中。 基本上,我想保留所有的格式、阴影等,但在输出表中去除所有的条件格式(使当前格式静态)。

我在网上看到了一些解决方案——从先将其复制到Word文档中,然后再将其粘贴回来,到逐个循环输出单元格并逐个复制格式元素——我只是在寻找一种好的、高效的方法来做到这一点。

有人有这样的方法/好的链接愿意分享吗?

(Excel 2010)

谢谢!


2
+1 “我知道你通常会展示你所尝试的,但是我通常不会回答那些没有展示一些努力的问题,但这是一个好问题 :)” - Siddharth Rout
5个回答

19

是可以的 :) 您需要做的是更改您计划复制的单元格的格式,模仿DisplayFormat,然后删除条件格式

Sub Keep_Format()
    Dim ws As Worksheet
    Dim mySel As Range, aCell As Range

    '~~> Change this to the relevant sheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    '~~> Change this to the relevant range
    Set mySel = ws.Range("A1:A10")

    For Each aCell In mySel
        With aCell
          .Font.FontStyle = .DisplayFormat.Font.FontStyle
          .Interior.Color = .DisplayFormat.Interior.Color
          .Font.Strikethrough = .DisplayFormat.Font.Strikethrough
        End With
    Next aCell

    mySel.FormatConditions.Delete

    '
    '~~> Now Do the copying
    '

    '~~> Once you are done, close the sorce worksheet without saving
End Sub

1
一个非常棒的编码和优雅的解决方案!没有花哨,没有麻烦!!!完美无缺,谢谢你! - John Bustos
有没有重新应用条件格式的方法?我想做的是删除条件格式,将单元格复制并粘贴到另一个工作表中,然后重新应用条件格式。这可行吗? - Ben Smith
这个小工具真是省了我很多时间。我一直在试图找到一个方法来避免将条件格式公式应用于15000多个单元格列,而这正是完美的解决方案。谢谢!+1 - CaffeinatedMike
不幸的是,这与边框和边框线样式不兼容。否则做得很好。 - Robert J.
这里可以找到一个更完整的复制例程(包括边框等):https://stackoverflow.com/a/56036633/1915920 - Andreas Covidiot

9

哦,哇。这怎么不是正确答案呢?这是唯一一个说出这个方法的地方,而且这是最简单、非VBA的粘贴格式的方法。 - Belinda-Jane Netan
谢谢,我在调试办公室剪贴板时遇到了这个问题。我也在其他地方找不到任何信息。 - MarioTheHedgehog
这个要简单得多。 - mikelowry

2

我复制了一段单元格范围,将它们粘贴到了Word中。然后在Word中重新复制了这个范围,并将其粘贴回Excel中。


1
绝对是最简单的。 - Derek Eden

-1

我也曾尝试过同样的事情,但所有的答案对我来说都太麻烦了,或者基于某些错误/故障。

对我有效的方法是打开 ms word,将整个表格从 ms excel 复制到 ms word,然后再将其粘贴回 ms excel。样式还在,但条件格式不再适用。


-1
一个非常简单的方法是按颜色筛选列表。然后使用所需的单元格颜色进行填充。然后取消筛选并删除条件格式。填充将保留。

这并没有回答楼主的问题。 - StoneGiant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接