在数据验证中按公式引用命名范围

时间:2018-04-12 12:41:12

标签: excel validation dynamic range formula

你好,很棒的人。

我有一系列命名范围,A_ColoursB_Colours等。 它们表示颜色列表中已排序列的部分,按制造这些颜色的制造商的代码进行排序。这些是动态命名范围,由COUNTA构造为具有该mfr代码的颜色数。根据我的计算,列表应该是连续的,因为列是按代码排序的。

我知道我可以通过简单地将=A_Colours设置为列表来源(无引号)来引用数据验证中的范围。在这种情况下,可以正常工作

但是,我有一个下拉菜单来控制我想在子下拉列表中显示哪个A-M范围。 所以,例如A1中的下拉列表显示A,B,C,D作为选项。 B1中的下拉列表显示相对于A1中所选选项的下拉选项。

示例: 我从A1的列表中选择A. 在单元格B1中,我希望我的下拉列表显示来自命名范围A_Colours的所有值。

我已经尝试了各种方法将文本字符串A_Colours传递给DV列表源字段,但都失败了。公式中的错误或范围评估为错误,或者它允许我从下拉列表中仅选择A_Colours。

示例1: A1选择A. B1 DV盒子:

=INDIRECT("$A$1")&"_Colours"

这会产生错误“列表源必须是分隔列表,或者是对单行或列的引用。”

这可能是因为表格列表已排序吗?我不这么认为,因为上面的第一个例子有效。

示例2:使用C1中的辅助单元格按公式创建文本字符串“A_Colours”: = $ A $ 1和; “_颜色”

然后在单元格B1的DV框中:

=INDIRECT("$C$1")

请帮我实现这个目标! 谢谢。

[编辑]解决方案:

按照以下说明创建新工作表。 为每个制造商创建标题(单元格A1中的“A”)。 在A2中输入公式(作为数组公式,Ctrl + Shift + Enter):

= INDEX(颜色,小(IF((INDEX(颜色,1)= INDEX(MFR,MATCH(A $ 1,MFR [MFRName],0),2)),MATCH(行(颜色),行(颜色)),“”),ROWS($ B $ 1:B1)),COLUMNS($ A $ 1:$ B1))

我对它进行了一些改编,但对此归功于https://www.get-digital-help.com/2009/09/28/extract-all-rows-from-a-range-that-meet-criteria-in-one-column-in-excel/

将公式应用到最后加上几个以允许扩展。 将公式应用于最后一个标题。

现在您的列表肯定是连续的,单列而非动态的,因此符合严格的数据验证标准。

为每个列表创建一个命名范围,使用确切的名称保持简单,但我选择在末尾添加“名称”,例如Mfr1Colours。

在DV源列表字段中引用它们(对于原始表格中的单元格B2),如: = INDIRECT($ B $ 2及 “颜色”)

这是做什么的: 在Colors表中查找: MFR代码颜色代码

从制造商表“MFR”中找到原始工作表(“A”)的单元格A1中MFR代码的第一个匹配实例,其中包含以下列: MFRName代码

通过MATCH拉出行(ROW(颜色,行(颜色),“)。

检查最后ROWS和COLUMNS所需的行和列。

1 个答案:

答案 0 :(得分:1)

如果您有一个备用的辅助范围,您可以在其中创建一个包含2列的简单代码表 - class TermsMiddleware { /** * @var UserService */ protected $userService; /** * TermsMiddleware constructor. * @param UserService $userService */ public function __construct(UserService $userService) { $this->userService = $userService; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if (!$this->userService->hasAcceptedTerms()) { return redirect('/welcome'); } return $next($request); } } Color_Reference并将其命名为Color_Names

c_colors

您可以在CV列表配置中将其用于单元格B1上的dropdoon:

A A_Colour
B B_Colour
C C_Colour

尝试查看此处的示例,它也可能对您有所帮助:http://www.contextures.com/xlDataVal02.html