是否可能在Excel数据输入电子表格(VBA?)中不允许特定的空值?

问题描述 投票:0回答:1

我有一个excel工作表,其中有许多手动数据输入和计算所得的列,要逐行填充,并从左到右填充行。

我有几列要确保在执行此数据输入时不会留空。

例如Example data entry sheet

[我在第三行中从左至右输入数据,并要确保如果手动进行数据输入的人员无意间跳过了“唯一ID”列,并尝试首先填写“类型”,则会被迫返回“唯一ID”单元格,或者至少遇到一个弹出窗口,告诉他们首先输入“唯一ID”。

这可以做吗?

excel vba validation rows spreadsheet
1个回答
0
投票

这可以用不同的方式处理;其中之一是添加简单的数据验证规则。

向第二个单元格添加数据验证规则,该规则将检查前一个字段是否为空白。如果是这样,则不允许输入单元格并显示弹出消息。数据验证规则仅需具有TRUE结果。

将此公式添加到第二个单元格上的自定义数据验证规则。

not(isblank(c7))

enter image description here

然后,如果用户尝试在第一个单元格仍为空白时填充第二个单元格,则用户将收到警报消息,然后清除单元格内容。

enter image description here

更新#1

如果需要为数据验证列表创建依赖项,则可以将表添加到新工作表中以用作列表处理程序。基本理论是,每一行的索引填充一列,第二列检查是否满足条件,第三列包含列表中可能出现的所有项目,第四列是建立公式基于所有条件的列表。

这里是一个有效的例子。它与您的方案有些不同,但它显示了前提。下面的示例构建只能选择一次的项目列表。在单元格中选择该项目后,它不会出现在其他单元格的列表中。

enter image description here

t_FinalPlans_Medical是表的名称。

medicalRow_FinalPlanSelections是一个命名范围,其中包含具有数据验证规则/下拉列表的单元格。

dataValid_FinalMedicalPlans_OptHeading是保存列标题的命名范围。

INDIRECT("t_FinalPlans_Medical[[#Headers],[Column1]]")

dataValid_FinalMedicalPlans_OptList是索引列的命名范围。

INDIRECT("t_FinalPlans_Medical[Index]")

索引列公式IF([@[Unselected Plans]]="","",MAX($D$7:D7)+1)

最终方案选择列手动输入此列中的每个单元格。

未选择的计划列公式

IF(COUNTIF(medicalRow_FinalPlanSelections,[@[Final Plan Selections]])=0,[@[Final Plan Selections]],"")

Column1公式

IFERROR(INDEX([Unselected Plans],MATCH(ROW()-ROW(t_FinalPlans_Medical[[#Headers],[Column1]]),[Index],0)),"")

用作数据验证的公式(动态扩展)OFFSET(dataValid_FinalMedicalPlans_OptHeading,1,0,MAX(dataValid_FinalMedicalPlans_OptList),1)

https://trumpexcel.com/excel-drop-down-list/

© www.soinside.com 2019 - 2024. All rights reserved.