Vba 用于数据验证的基于公式的列表

Vba 用于数据验证的基于公式的列表,vba,excel,validation,Vba,Excel,Validation,请参阅下面的图片附件。我想就D2:D6值的半自动化寻求帮助。目前,他们有以下公式: =IF(C2="n/a",$D$12,IF(C2="","",IF(OR(TODAY()=C2,TODAY()>C2),$D$11,$D$10))) =IF(B2="n/a","N/A",IF(B2="","",$B$8-$B2)) 另一方面,C列具有以下公式: =

请参阅下面的图片附件。我想就D2:D6值的半自动化寻求帮助。目前,他们有以下公式:

=IF(C2="n/a",$D$12,IF(C2="","",IF(OR(TODAY()=C2,TODAY()>C2),$D$11,$D$10)))
=IF(B2="n/a","N/A",IF(B2="","",$B$8-$B2))
另一方面,C列具有以下公式:

=IF(C2="n/a",$D$12,IF(C2="","",IF(OR(TODAY()=C2,TODAY()>C2),$D$11,$D$10)))
=IF(B2="n/a","N/A",IF(B2="","",$B$8-$B2))
基本上,这些公式的作用是,在我在B列输入一个值“x”后,C列会自动指示B8上开始日期之前的日期“x”。然后,D列指示截止日期是到期、未到期、不适用还是准备就绪(D2:D6是使用包括D9:D13的列表验证的数据)

但是,如果某个操作已经完成,则会从下拉列表中手动选择“就绪”选项,然后删除公式。我想寻求帮助的是,如果只是意外选择了“准备就绪”选项,或者如果我的同事(不支持excel)需要通过删除A列和B列中的项目来重复使用表单,我如何返回已删除的公式

我尝试做的是在下拉列表中将公式本身作为一个选项,但这不会调整每个项的单元格地址,只显示一个静态值

我想到的一个选项是只使用“Ready”选项限制数据验证列表,这样用户就可以删除单元格。然后,VBA代码将检测空白单元格并返回最初的公式。不幸的是,我真的不知道VBA或任何编程。但是,我能够理解并根据我以前的需要使用和修改了互联网上发布的VBA代码。我试着搜索一个代码,但没有用

如果你能给我一些关于这方面的参考资料(请不要整本书),我将非常感激。如果你觉得很仁慈,帮我编码,谢谢!然而,如果有一个非VBA的解决方案,那么我真的很想了解更多。谢谢大家


如果将
未准备好/准备好
尚未到期/到期
分为两列,则可以完全不使用VBA。然后,只需确定
尚未到期/到期
如果(或(今天()=C2,今天()>C2),$D$11,$D$10))
也可以写成
如果(今天()>=C2,$D$11,$D$10)
。如果(C2>TODAY(),$D$10,$D$11),这难道不等于说
IF(C2>TODAY(),$D$10,$D$11)
?使用VBA安装公式是使用VBA设置单元格值的漫长过程。您必须已经有VBA才能删除公式。因此,您已经有VBA来控制该单元格的值。因此,您必须完全通过VBA控制该单元,或者根本不控制该单元。我不明白的是,为什么你不能调整你的公式来考虑选择的“就绪”:如果DD没有“就绪”,执行公式,如果DD显示“就绪”,则显示“就绪”。是因为公式和DD在同一单元格中吗?你能把DD移到相邻的牢房吗?嗨,Alex Richter。嗯,我明白了。这是一个很好的选择。谢谢但是,我不确定是否允许我们这样做,因为数据验证列表中使用的术语已经得到了我们合作伙伴的批准,不知何故,我发现很难更改它们。我会尽量向他们建议这一点,但如果有考虑到原文的解决办法,我将非常感谢。谢谢!:)@阿克塞尔里希特,谢谢你的建议。我最终采纳了你的建议。谢谢