不用VBA的Excel表格默认值和数据验证

1bqhqjot  于 2023-01-10  发布在  其他
关注(0)|答案(3)|浏览(191)

我在Excel中有一个用于跟踪项目的表。每当我为该表创建新行时,我希望它自动填充该项目具有“未开票”的一列。我还希望此列使用数据验证,以只允许“未开票”或“已开票”作为内容。
我已经能够使这两件事的工作,但我似乎不能使他们一起工作没有错误!最接近我得到的:

  • 在相关列中放置一个公式。我已经尝试了超级基本的="Not Invoiced"以及基于另一列空白的=IF公式。每次我新建一行时,这个公式都能正确地向下传递。
  • 然后,我添加了数据验证的列,这也工作正常,因为我的默认值从我的公式是一个选项,但当该项目的发票,我选择“已开票”,我然后得到一个错误,我违反了上述公式。从我所读到的选择从下拉列表中的东西应该只是取代自动填充的公式,但这似乎没有发生,它会给我一个错误,我违反了列的公式。

我已经读了多个地方,如果你正确地订购的东西(创建表,添加默认值的公式,然后添加数据验证)上述方法应该工作,但它不会为我,我继续得到错误,每次我改变为“发票”。

0yycz8jy

0yycz8jy1#

您可以将状态"未开票"和"已开票"输入到相邻的单元格中,例如$G$3和$G$4。然后,为$G$3:$G$4创建一个命名范围,例如"ValList"(菜单:公式/定义名称)。
假设列A是控制列,列B是状态列("已开票"/"未开票")。单元格B5的示例:
初始状态为= IF(A5 =""; ""; 3圭元)
验证(类型"列表")必须由公式= IF(A5 =""; "";验证列表)
祝你好运!

aiazj4mn

aiazj4mn2#

有一个简单的方法可以做到这一点。
在开始使用新表格之前,请将列表数据验证添加到第一行(也是唯一一行)中的单元格:

Invoiced,Not Invoiced

然后,在表格的第一行同一单元格中写下:

=IF(TRUE,"Not Invoiced";"Not Invoiced")

这将把Not Invoiced作为添加到表中的每一个新行的默认值,同时保持数据验证。您仍然可以在每一个新行的单元格上访问存储在初始单元格的数据验证列表参数中的下拉列表。
由于某种原因,如果您尝试引用另一个单元格使用相同的IF函数方法,数据验证将被覆盖,正如您所描述的那样。

slhcrj9b

slhcrj9b3#

解决这个问题的一种方法是使用帮助器列。您可以使用输入列的数据验证列表,比如列A。您可以使用隐藏列B中的公式,公式=IF(A1,“已开票”,“已开票”,“未开票”)

相关问题