MATCH在某些单元中起作用,而在其他单元中不起作用

时间:2019-07-25 10:55:57

标签: google-sheets

背景

我一直在Google表格中制作自定义DnD字符表,遇到了问题。

我一直试图制作两个具有下拉菜单的单元格,这些菜单允许某人选择一个类和子类。为了避免混乱,我一直在尝试使其变得更整洁,以便在选择一个类之后,“子类”下拉框仅显示所选类的子类。

在线查看,似乎最好的方法是创建一个代理列,其中每个单元格对应于您想要的选项之一,然后根据“类”单元格的值用所选类的子类填充它(我在this tutorial中找到了这种方法。)

不幸的是,本教程中给出的解决方案是粗略的,无法扩展。将来我可能会添加新的类或子类,并且不想每次我想要一个新类时都必须创建一个全新的公式。尽管提供的公式可以轻松扩展以适用于潜在的无限子类,但添加新类需要将一堆代码复制并粘贴到最终将变得越来越长的意大利面条中。

尽管如此,我发现了一个可以同时缩放两者的公式!检查下面的屏幕截图,请特别注意P11(“ 3”下方的位置不正确的文本块): This is what the 'metadata' spreadsheet looks like currently. 高亮显示的单元格中的公式与P11中的公式相同,您可以看到它显示了预期的结果(另一个选项卡中的单元格E3已设置为“ Cleric”)。尽管如此,另一个单元格仍显示“找不到数组值” 错误。一些调试表明,这是公式中的“ MATCH”语句存在的问题(当单独放置到同一单元格中时也会引起错误)。

问题

如果'MATCH'语句在此单元格中像在其他单元格中一样起作用,那么我将无后顾之忧。因此,我想知道为什么会遇到错误,以及如何解决该错误。

另一方面,也许有更好的方法可以解决这个问题,而我甚至还没有想到从长远来看我会更好地使用它,在这种情况下,我也很乐意听。如果您注意到'Subclass Prefix'和'Subclass Suffix'的行,我的下一个计划是使所有子类自动具有给定的后缀和前缀,因此对于我的最终方法友好一点(布朗尼点,如果您能以正确的方式指出我来完成此任务)。

补充材料

以下是电子表格中可见的公式。

=INDIRECT(CONCATENATE(REGEXREPLACE(ADDRESS(7, MATCH('Basic Character Details'!E3, D3:3, D7:7)+3, 4, False), "[\[\]]", ""), ":", REGEXREPLACE(REGEXREPLACE(ADDRESS(7, MATCH('Basic Character Details'!E3, D3:3, D7:7)+3, 4, False), "[\[\]]", ""), "^..", "")), False)

1 个答案:

答案 0 :(得分:0)

作为一种更可靠且面向未来的解决方案,建议您像这样布置数据并使用QUERY()函数来限制子类选项中的内容:

COL A       COL B

Class       Subclass
---------------------------
Fighter     Champion
Fighter     Battle Master
Fighter     Eldritch Knight
etc.

对于第一个进入数据验证(唯一类)的列表,查询如下:

=QUERY(A:B, "SELECT A, COUNT(A) GROUP BY A")

然后,一旦有人选择了一个班级,就会像下面这样返回有效的子班级列表:

=QUERY(A:B, "SELECT B, COUNT(B) WHERE A = '" &D1& "' GROUP BY B")

(其中D1是当前所选类的位置)。不要忘记单引号,否则查询将无法工作。

您可以看到在此数据结构中添加前缀和后缀如何使您也可以用它们完成相同的事情。

仅供参考-QUERY()函数是Google表格AFAIK独有的。