【问题标题】:Create 100+ Named ranges based on formula in cells根据单元格中的公式创建 100 多个命名范围
【发布时间】:2014-08-26 13:13:41
【问题描述】:

已经找了好久,由于缺乏独特的术语找不到任何解决方案,所以也许这里的专家可以提供帮助。

所以我得到了这个包含 300 多个列的表格,这些列是这样填充的

第 1 行标题/名称。

当为范围创建“新名称”时,第 2 行范围公式将位于“引用”输入区域中。

第 3/22 行范围公式中使用的信息。

要在另一个工作表上的数据验证中使用范围公式,我需要命名这些范围。如果我手动输入“新名称”,我可以将第 2 行的范围公式复制到“引用”输入区域,只有 300 列,这将是漫长的一天。那时我发现了 CRTL+SHIFT+F3 组合,它可以基于标题/名称和选择。不幸的是,这使用选择的位置作为源,在我的情况下,它应该是位置单元格内的公式,它必须是源......

那么有没有办法使用“从选择中创建名称”工具,它使用单元格内的公式作为源而不是位置?

这里有一张图片来帮助描述问题

【问题讨论】:

  • 您确定需要 300 个不同的命名范围进行验证吗?有关第二张纸的构造的更多信息可能会很有用。也许你可以只用一个命名范围来解决这个问题。
  • 300 可能会少一点,但必须在 200 行以上。在本文档中,我正在创建一个订单。我们有大约 400 种不同颜色组合的产品。
  • 我已经构建了表格,当输入产品名称或代码时,它会自动填充相应的名称/代码、价格、最小起订量,并很快会出现可用颜色的下拉列表数据验证。所有单元格都取决于输入的名称或代码。因此,例如,当在行中输入“产品 1”时,它会在另一张表中搜索相应的颜色,然后将这些颜色转换为应填充数据验证的动态列表。当在第 1 行输入不同的产品时,它应该返回相应的颜色。
  • row1 中的数据验证始终基于动态范围 1、row2 动态范围2 等...希望这可以解决问题。感谢您的回复!

标签: excel range formula named


【解决方案1】:

您应该能够为每个验证使用 1 个命名范围来解决此问题(再加上 2 个以使公式不那么复杂)。

第一个命名范围 (all_headers) 应定义为:

=OFFSET('C'!$A$1,0,0,1,COUNTA('C'!$1:$1))

它返回一个带有来自C 表的标题(产品名称或代码)的范围。我们假设第一列是 A,并且它们之间没有空列。

接下来我们需要选择正确的列。这里有点棘手。在要验证颜色的行中,您需要具有与 C 表标题中使用的完全相同的产品名称或代码。如果此信息在单元格 A2 中,您应该:

  • 在应该进行颜色验证的同一行和列中选择单元格(例如 B2)
  • 使用以下公式定义新的命名范围col_header:

    =INDEX(all_headers,1,MATCH(A2,all_headers,0))
    

上述动态命名范围是relative,这就是为什么在定义之前选择合适的单元格非常重要。

最后一步是参考所选列中的颜色列表定义命名范围val_list:

=OFFSET(col_header,2,0,COUNTA(OFFSET(col_header,2,0,50,1)),1)

您提到第二行不包含数据,这就是为什么公式中有两次2 参数。如果您删除它,请改用1。 50 是颜色的最大数量 - 您可以调整它。

现在您可以在任何单元格中使用val_list 进行验证。如果左侧的单元格包含来自C 表头的有效产品名称/代码,它应该为您提供正确的列表。

【讨论】:

  • 谢谢您,先生,我了解流程但不了解棘手的部分..s13.postimg.org/r55wjyn5z/Capture.png 这是表格!表是用户应该输入的订单。所有蓝色 colloms 都会自动填充,并且在 G 列中是应该进行验证的位置。此工作表中的所有单元格都由工作表 X 上的信息填充!这是我们的主产品表的导入,其中包含所有产品名称/代码和颜色..
  • s16.postimg.org/i2apw99k5/Capture2.png 是我根据您评论的第一部分所做的。 All_Headers 范围应该是基于行 B$2:2 的第一个 OFFSET 公式,其中包含确切的产品代码。我用指向 FORM!E 列的链接填充了 All_Headers 行。有了这些信息,您能否重新解释我应该在哪里执行此操作?:“选择同一行中的单元格和应该进行颜色验证的列中的单元格(例如 B2)” 顺便说一句,非常感谢您的帮助,非常感谢!
  • 您的产品代码在E2,颜色验证在G2。所以选择 G2 单元格,然后定义一个新的命名范围col_header 为=INDEX(all_headers,1,MATCH(E2,all_headers,0))。要测试它是否按预期工作,您可以在任何 FORM!G 单元格中键入 =col_header。它应该返回产品代码。定义最后一个范围应该很容易。
  • 太棒了!它有效,这将为我节省很多工作。不过只剩下一个问题了。下拉列表总是由 20 个选项填充,这在大多数情况下会导致下拉列表中有很多空选项。换句话说,该公式不排除 C!B3:Z23 表中的空白(外观)单元格。无论如何要在这里获得一些动态功能来排除空白单元格?
  • 原因和解决方案非常简单。在val_list 中有COUNTA(OFFSET(col_header,2,0,50,1))。这个算不算空单元格。从您的屏幕截图来看,所有单元格都不为空,其中一些包含空字符串。将其替换为SUMPRODUCT(--(OFFSET(col_header,2,0,50,1)<>""))。如果这对您有用,请接受答案并点赞,以便其他人看到。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 2018-02-05
  • 2015-09-12
  • 1970-01-01
相关资源
最近更新 更多