Excel 基于列中的现有单元格填充颜色替换单元格填充颜色

Excel 基于列中的现有单元格填充颜色替换单元格填充颜色,excel,vba,macros,background-color,cells,Excel,Vba,Macros,Background Color,Cells,我附上了一张截图来直观地显示我正在尝试做什么 我正在尝试根据现有单元格填充颜色替换“昨天”列中单元格的填充颜色 我见过基于单元格中的值替换颜色的示例,但我认为我有不同的场景。编辑:试试这个 Public Sub ChangeCellColors() Dim rngTarget As Excel.Range: Set rngTarget = Range("H3") Dim rngSource As Excel.Range: Set rngSource = Range("H4") Di

我附上了一张截图来直观地显示我正在尝试做什么

我正在尝试根据现有单元格填充颜色替换“昨天”列中单元格的填充颜色

我见过基于单元格中的值替换颜色的示例,但我认为我有不同的场景。

编辑:试试这个

Public Sub ChangeCellColors()
  Dim rngTarget As Excel.Range: Set rngTarget = Range("H3")
  Dim rngSource As Excel.Range: Set rngSource = Range("H4")
  Dim rngCell As Excel.Range

  For Each rngCell In Range("B4:B17")
    With rngCell.Interior
      If rngCell.Interior.Color = rngTarget.Interior.Color Then
        .Pattern = rngSource.Interior.Pattern
        .PatternColorIndex = rngSource.Interior.PatternColorIndex
        .Color = rngSource.Interior.Color
        .TintAndShade = rngSource.Interior.TintAndShade
        .PatternTintAndShade = rngSource.Interior.PatternTintAndShade
      End If
    End With
  Next rngCell

  Set rngSource = Nothing
  Set rngTarget = Nothing
  Set rngCell = Nothing
End Sub

也许这可以帮助你:

Option Explicit

Public Sub main()
    Dim cell As Range, foundCells As Range
    Dim yesterdayColor As Long, todayColor As Long

    yesterdayColor = Range("H3").Interior.Color
    todayColor = Range("H4").Interior.Color

    With Range("B5:B17") '<--| reference wanted range of which coloring any "yesterdayColor" colored cells with "todayColor" color
        Set foundCells = .Offset(, .Columns.Count).Resize(1, 1) '<-- initialize a dummy "found" cell outside the relevant range and avoid 'IF' checking in subsequent 'Union()' method calls
        For Each cell In .Cells '<--| loop through referenced range cells
            If cell.Interior.Color = yesterdayColor Then Set foundCells = Union(foundCells, cell) '<--| gather yesterday colored cells together
        Next cell
        Set foundCells = Intersect(.Cells, foundCells) '<--| get rid of the dummy "found" cell
    End With
    If Not foundCells Is Nothing Then foundCells.Interior.Color = todayColor '<--| if any cell has been found then change their color
End Sub
选项显式
公用分干管()
暗淡单元格作为范围,查找单元格作为范围
暗淡的昨天的颜色一样长,今天的颜色一样长
昨天颜色=范围(“H3”).Interior.Color
todayColor=范围(“H4”).Interior.Color

感谢MJH,这个代码片段几乎让我达到了目的。在我的工作表中,我使用(条件语句和Today()函数)突出显示了今天的专栏。是否可以自动选择“昨天”列以执行此单元格填充颜色替换?感谢MJH,宏将“昨天”列中的所有单元格替换为单元格“H4”中的颜色。有什么想法吗?关于你的第一个评论,对不起,但我不明白。“我使用(条件语句和Today()函数)突出显示了今天的列”是什么意思?而且,您是否正在寻找比
范围(“B5:B17”)
更灵活的方法,可能是因为该范围不是静态的?关于第二条评论,我的印象是这正是您想要的。@MJM感谢您的回答,不要再让人困惑了,我已经附上了我的实际工作表I.stack.imgur.com/BuiFc.jpg该工作表应该可以帮助我跟踪任何活动的进度。当我根据日期打开电子表格时,特定列将高亮显示。我使用了条件格式化&today()函数来实现这一点。下一步是填充前一天的单元格颜色,但只填充活动的单元格颜色。谢谢,但新的屏幕截图无助于解释我提供的代码存在的问题。该代码完全按照您的要求执行,即“根据现有单元格填充颜色替换“昨天”列中单元格的填充颜色”。如果您已经修改了它,请提供您正在运行的确切代码,以及它如何不适合您。换句话说,请提供有关工作表在运行代码之前的外观、代码运行之后的预期结果以及您将获得的结果的详细信息。感谢您的回答,不要再让人困惑了,我已附上我的实际工作表。该工作表应帮助我跟踪任何活动的进度。当我根据日期打开电子表格时,特定列将高亮显示。我使用了条件格式化&today()函数来实现这一点。下一步是为前一天填充单元格颜色,但仅适用于活动活动。此代码有效!:)令人惊叹的。新屏幕截图突出显示了2016年8月30日当天的专栏。我只想对前一天/昨天=2016年8月29日的列进行单元格填充着色。根据本网站规则1),这可以并入@user3598756As吗?因为我完成了你的原始问题,请将我的回答标记为接受谢谢。2) 再次为新问题创建新帖子。我会再发一个问题吗?你有空的时候可以看一下我的第二个问题吗?谢谢