我有一个excel工作表,其中有许多手动数据输入和计算所得的列,要逐行填充,并从左到右填充行。
我有几列要确保在执行此数据输入时不会留空。
[我在第三行中从左至右输入数据,并要确保如果手动进行数据输入的人员无意间跳过了“唯一ID”列,并尝试首先填写“类型”,则会被迫返回“唯一ID”单元格,或者至少遇到一个弹出窗口,告诉他们首先输入“唯一ID”。
这可以做吗?
这可以用不同的方式处理;其中之一是添加简单的数据验证规则。
向第二个单元格添加数据验证规则,该规则将检查前一个字段是否为空白。如果是这样,则不允许输入单元格并显示弹出消息。数据验证规则仅需具有TRUE结果。
将此公式添加到第二个单元格上的自定义数据验证规则。
not(isblank(c7))
然后,如果用户尝试在第一个单元格仍为空白时填充第二个单元格,则用户将收到警报消息,然后清除单元格内容。
更新#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)