添加过滤器时,基于其他列的自动填充列值失败
Auto-fill column value based on other column fails when a filter is added
我制作了一个启用宏的工作表,当我在 C1
、C2
、C3
列中填写一个单元格时,对应于 [=14] 中的列值=],与特定 ID
对应的所有单元格都用 C1
、C2
等中的相同值填充。而且,当我从 [=18= 中的一个单元格中删除值时], 它会自动从 Completed 中对应于 ID
.
中该值的所有单元格中删除
例如。在下面的数据中,我希望当我在 C1
、C2
和 C3
列中的空白单元格 (__
) 自动填充 Y
s在其他单元格中输入 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
列添加过滤器以仅过滤角色为 A
和 B
的行时,我遇到了一个错误,该方法不起作用不出所料。 谁能告诉我这是为什么,以及如何解决?
编辑: 稍微更改了模拟数据和说明以更好地描述我的要求。
我建议简单地遍历每个 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
我制作了一个启用宏的工作表,当我在 C1
、C2
、C3
列中填写一个单元格时,对应于 [=14] 中的列值=],与特定 ID
对应的所有单元格都用 C1
、C2
等中的相同值填充。而且,当我从 [=18= 中的一个单元格中删除值时], 它会自动从 Completed 中对应于 ID
.
例如。在下面的数据中,我希望当我在 C1
、C2
和 C3
列中的空白单元格 (__
) 自动填充 Y
s在其他单元格中输入 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
这个方法对我来说很管用。 但是,当我向 Role
列添加过滤器以仅过滤角色为 A
和 B
的行时,我遇到了一个错误,该方法不起作用不出所料。 谁能告诉我这是为什么,以及如何解决?
编辑: 稍微更改了模拟数据和说明以更好地描述我的要求。
我建议简单地遍历每个 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