我正在开发一个excel模板,其中有100个或更多记录。 我有一个要求,在其中一个列中,用户需要输入帐户ID。现在,对于所有100条记录,此帐户ID必须相同。
通过VBA,我可以在用户再添加一行时添加帐户ID(使用VBA在“帐户ID”列中添加一行值)
我正在使用数据验证,这与从列
中删除重复值相反= COUNTIF($ E $ 4:$ E $ 106 E4)<大于1
但这些是这个公式的问题
当我更改父单元格中的任何值,即E4时,我收到错误。
当我添加新行时,公式的值将从E4更改为E5。
我需要一个公式,我应该能够改变E4的值而不是E5的值。此外,当我添加新行时,它不应该增加。
此外,还有一个VBA代码,用于验证列中是否包含单个值(在完整范围内表示E4:E104)
答案 0 :(得分:1)
从E列中删除所有数据验证后,将其放入工作表的私有代码表(不是公共模块代码表)。
private sub worksheet_change(byval target as range)
if not intersect(target, range("e:e"), usedrange.offset(3, 0)) is nothing then
on error goto meh
application.enableevents = false
range(cells(4, "e"), cells(rows.count, "e").end(xlup)) = cells(4, "e").value2
end if
meh:
application.enableevents = true
end sub
答案 1 :(得分:0)
如果您拥有正确ID的多个副本,则用于验证的countif公式将返回true。如果你有不同的Id,它不会返回false,只要你有至少2的E4,当你把它改成另一个东西它变成假而你得到你的错误。
您应该使用和(确切地说($ E $ 4:$ E $ 104,E $ 4))进行验证