我有一个 excel 工作表,其中有许多手动数据输入和计算列,这些列将逐行填写,行从左到右填充。
我有几列我想确保在执行此数据输入时不会留空。
这里我在第 3 行从左到右输入数据,想确保如果手动输入数据的人不小心跳过了“唯一 ID”列并尝试先填写“类型”,他们将被强制返回“唯一 ID”单元格或至少体验一个弹出窗口,告诉他们先输入“唯一 ID”。
这是可以做到的吗?
我有一个 excel 工作表,其中有许多手动数据输入和计算列,这些列将逐行填写,行从左到右填充。
我有几列我想确保在执行此数据输入时不会留空。
这里我在第 3 行从左到右输入数据,想确保如果手动输入数据的人不小心跳过了“唯一 ID”列并尝试先填写“类型”,他们将被强制返回“唯一 ID”单元格或至少体验一个弹出窗口,告诉他们先输入“唯一 ID”。
这是可以做到的吗?
这可以通过不同的方式处理;其中之一是添加一个简单的数据验证规则。
将数据验证规则添加到第二个单元格,以检查先前字段是否为空白。如果是这样,不允许在单元格中输入并显示弹出消息。数据验证规则只需要有一个 TRUE 结果。
将此公式添加到第二个单元格的自定义数据验证规则中。
not(isblank(c7))
然后,如果用户尝试填充第 2 个单元格而第 1 个单元格仍为空白,则用户会收到一条警报消息,然后单元格内容被清除。
更新#1
如果您需要为数据验证列表创建依赖项,您可以将表添加到新工作表以充当列表处理程序。基本理论是,一列填充每一行的索引,第二列检查是否满足条件,第三列包含可能出现在列表中的每个项目,第四列是建立的公式基于所有标准的列表。
这是一个工作示例。它与您的场景略有不同,但它显示了前提。下面的示例构建了一个只能选择一次的项目列表。在单元格中选择项目后,它不会出现在其他单元格的列表中。
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)