添加过滤器时,基于其他列的自动填充列值失败

Auto-fill column value based on other column fails when a filter is added

我制作了一个启用宏的工作表,当我在 C1C2C3 列中填写一个单元格时,对应于 [=14] 中的列值=],与特定 ID 对应的所有单元格都用 C1C2 等中的相同值填充。而且,当我从 [=18= 中的一个单元格中删除值时], 它会自动从 Completed 中对应于 ID.

中该值的所有单元格中删除

例如。在下面的数据中,我希望当我在 C1C2C3 列中的空白单元格 (__) 自动填充 Ys在其他单元格中输入 Y

Role      ID         C1     C2    C3         ....
 A         1                 Y    
 A         2          Y            Y
 A         5          Y      Y
 A         8          Y
 B         2          __           __ 
 B         8          __
 B        10                       Y
 C        1                  __
 C        10                       __

为此,我使用了@VBasic2008 发布的答案。感谢@VBasic2008! :)

这个方法对我来说很管用。 但是,当我向 Role 列添加过滤器以仅过滤角色为 AB 的行时,我遇到了一个错误,该方法不起作用不出所料。 谁能告诉我这是为什么,以及如何解决?

编辑: 稍微更改了模拟数据和说明以更好地描述我的要求。

我建议简单地遍历每个 ID 单元格,直到找到该行中的空单元格。

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim ID As Long, completed As Variant, r As Long
  Application.EnableEvents = False
  If Sheet1.Cells(1, Target.Column).Value = "Completed" Then
    ID = Target.Offset(0, -1).Value
    completed = Target.Value
    r = 2
    Do Until Sheet1.Range("B" & r).Value = ""
      If Sheet1.Range("B" & r).Value = ID Then
        Sheet1.Range("C" & r).Value = completed
      End If
      r = r + 1
    Loop
  End If
  Application.EnableEvents = True
End Sub