首页 > 解决方案 > 编辑 - 如何复制粘贴数据验证并更改范围?

问题描述

所以我根据它旁边的单元格中的数据验证做了一个动态数据验证下拉列表。问题是,当我将此数据验证复制到 1000 行时,我希望它根据行更改范围。我知道它必须手动完成,但想知道它是否可以自动化?

所以基本上我所拥有的是 A1 是您选择的服务,然后 B1 让您可以从我创建的公式中选择子服务,这基本上是

=TRANSPOSE(SI(ESTVIDE(Prestations!$C7);;SI(Prestations!$C7='Données'!$B$28;INDIRECT("Depose");SI(Prestations!$C7='Données'!$E$28;INDIRECT("Sols");SI(Prestations!$C7='Données'!$H$28;INDIRECT("Cloisons");SI(Prestations!$C7='Données'!$K$28;INDIRECT("Peinture");SI(Prestations!$C7='Données'!$N$28;INDIRECT("Plafonds");SI(Prestations!$C7='Données'!$Q$28;INDIRECT("Plomberie_CVC");SI(Prestations!$C7='Données'!$T$28;INDIRECT("Autres");SI(Prestations!$C7='Données'!$W$28;INDIRECT("Cas_Specifique");"Prestation n'existe pas"))))))))))

代码是法语的,对此感到抱歉。所以基本上 SI=IF, ESTVIDE=ISBLANK 和 ,s 是 ;s。Prestations!$C7 是服务,所以基本上我们的“A1”,然后包含在 INDIRECTS 中的是子服务的命名范围。'Données'!B28:W28 基本上是我比较 A1 下拉列表中的服务名称。

然后我只是复制粘贴了超过 1000 行。所以这基本上是我们的E1,然后复制到E1000。在数据验证中,我只是将范围设置为 E1:Z1。我使用了转置,否则数据会与下面复制的公式发生冲突。

现在我需要的是 A2 以后的数据验证。当然,当我复制粘贴数据验证时,它采用相同的范围 E1:Z1。可以修改成E2:Z2、E3:Z3等吗?

编辑:这是文档Prestation_Test的链接

标签: validationgoogle-apps-scriptgoogle-sheetsscripting

解决方案



编辑 - 请注意,这个答案是在问题仍被标记为“Excel”时发布的。

好的。如果我理解正确,一种方法是使用当前单元格行定义一个动态命名范围。

使用以下公式定义一个名为“DataValidation”的命名范围:

=INDEX(Sheet1!$E:$E,ROW()):INDEX(Sheet1!$Z:$Z,ROW())

您需要将“Sheet1”更改为包含 E1:Z1000 范围的工作表的名称(从您的问题中不清楚它在哪个工作表上)。

然后就可以进入

=DataValidation 

进入单元格的数据验证并将该单元格向下拖动。然后,数据验证将基于当前行的 E 到 Z 列中的内容。


编辑 - 如何定义命名范围

  1. 转到“公式”功能区。
  2. 单击“名称管理器”。
  3. 点击“新建”。
  4. 输入“DataValidation”作为名称。
  5. 在“参考:”框中输入上述公式(更改工作表名称)。
  6. 单击“确定”。
  7. 点击“关闭”。

请看下图:

在此处输入图像描述


推荐阅读