在 ArrayFormula 中使用 Google 工作表中的列名称(标题)引用另一个 sheet 中的列

Reference a column in another sheet using column name (heading) in Google Sheets inside an ArrayFormula

我在 https://docs.google.com/spreadsheets/d/1i96cjWWGwLQQd2enqQhLylFo31n5GyxbCTcTEPk2I2A/edit#gid=0 有一个例子 sheet。

我的问题分为两个部分。

第 1 部分

namessheet中,在C1中,我有这个公式:

={
    "Is Special";
    ARRAYFORMULA(
        IF(
            A2:A <> "",
            REGEXMATCH(B2:B, "b|d|e"),
        )
    )
}

该公式按预期工作,但我不喜欢 B2:B 参考,因为我要检查的列不是很明显。我宁愿通过名称引用该列(在本例中为 First Name)。那可能吗?我可以用一些公式或函数替换 B2:B,让我通过搜索 First Name 来查找列范围吗?我知道我可以使用 MATCH 来获取 First Name 的列号,但我不确定如何将其放入此公式中——尤其是因为我不能在 [= 中使用 INDRECT 24=].

类似于:

={
    "Is Special";
    ARRAYFORMULA(
        IF(
            A2:A <> "",
            REGEXMATCH([some formula or function that lets me lookup the column range by searching for "First Name"], "b|d|e"),
        )
    )
}

第 2 部分

与上面类似,在 names sheet 中,在 D1 中我有这个公式:

={
    "Count of one Properties";
    ARRAYFORMULA(
        IF(
            A2:A <> "",
            COUNTIFS(
                properties!A:A, A2:A,
                properties!B:B, "one"
            ),
        )
    )
}

公式按预期工作。但是,我不喜欢 properties!B:B 参考。阅读公式时,我检查的 properties sheet 中的哪一列并不明显。是否有可能像上面那样通过搜索列名获取列范围,在本例中为 type?

不确定您是否熟悉“命名范围”:

={"Is Special"; ARRAYFORMULA(IF(A2:A<>"", REGEXMATCH(FirstName, "b|d|e"), ))}


更新:

={"Is Special"; ARRAYFORMULA(IF(A2:A<>"", 
 REGEXMATCH(QUERY(FirstName, "offset 1", 0), "b|d|e"), ))}

如果您不喜欢命名范围,请尝试:

={"Is Special"; ARRAYFORMULA(IF(A2:A<>"", 
 REGEXMATCH(FILTER({A2:B, D2:E}, {A1:B1, D1:E1}="First Name"), "b|d|e"), ))}

或喜欢:

={"Count of one Properties"; ARRAYFORMULA(IF(A2:A<>"", 
 COUNTIFS(properties!A2:A, A2:A, 
 VLOOKUP(ROW(properties!A2:A),{ROW(properties!A2:A), properties!A2:Z}, 
 MATCH("type", properties!1:1, 0)+1, 0), "one"), ))}