排序无法将数据验证规则与 Excel 中的数据一起移动

Li-*_*Yip 5 microsoft-excel-2007 microsoft-excel

在 Excel 中对表格或区域进行排序时,单元格值和基本格式(如粗体、斜体、颜色等)会移动,但以下内容不会移动:

  • 边框
  • 数据验证规则

我的电子表格具有每个单元格的数据验证,因此当我执行排序操作时,它会移动值,但不会随身携带它们的验证。

这是排序前的示例:

在此处输入图片说明

排序后(“水果”名称上的AZ。)

在此处输入图片说明

当 Excel 执行排序操作时,有没有办法让 Excel 移动数据验证规则以及值和格式?

编辑:

为了澄清,我在这里有两个可分离的问题:

  1. 主要问题:如果用户决定单击“排序”按钮或“过滤器”列标题上的“排序”选项,这将破坏我的(复杂!)数据验证规则。
  2. 次要问题:如果我的工作表可以使用内置的 Excel 排序按钮进行排序(这些是最明显的数据排序方式),那就太好了。仅用于排序的单独宏似乎有点笨拙。

编辑:

我的最终解决方案只是通过保护工作簿并禁用所有工作表的排序来完全禁用排序。您可以按“排序”按钮,但它们什么也不做。

作为额外的保护措施,我添加了每次打开工作簿时都会重新应用保护工作簿的 VBA,并显示一个带有使用说明和警告的工作表(例如“不要对此进行排序!”)。最终用户可以取消- 随时保护工作簿,所以这不是万无一失的,但我相信这是我能做的最好的。

Exc*_*lll 3

您可以制定处理 pH 值的一般规则并将其应用于整个值列。您只需添加一个条件来检查 Key1 以查看该值是否为 pH 值;如果是,检查标准;如果不是,则返回 TRUE,这样任何事情都是允许的。

例如,以下是应用于C2:C6表中(值 1 列)的自定义数据验证规则:

=IF(B2="pH",AND(C2>=0,C2<=14,C2=INT(C2)),TRUE)
Run Code Online (Sandbox Code Playgroud)

这将限制 pH 值 0<=pH<=14 并且仅限整数。由于该规则应用于整列,因此排序不会影响数据有效性。

在此输入图像描述

如果使用条件格式应用边框,则可以以类似的方式处理边框。只需使用适当的公式规则将其应用于列中的所有数据,例如

=B2="pH"
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 如果您有少量可能的规则,这是一个好方法,这就是我的示例所示的。:) 但是,在可能有数百个不同规则的情况下,构建单个复杂的验证规则很困难。这也意味着输入消息和错误警报不能提供太多信息。 (2认同)