首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对查询或索引使用ARRAYFORMULA的替代方法

对查询或索引使用ARRAYFORMULA的替代方法
EN

Stack Overflow用户
提问于 2020-09-11 01:15:55
回答 1查看 853关注 0票数 1

更有针对性的解释:

这是电子表格https://docs.google.com/spreadsheets/d/1eMlf9QrI59mdOlUzQSzQherSXxcMbJq9iSyHIxKNaRM/edit?usp=sharing

在ES列的表"6-7 Master 2020-21“上,每一行都需要有一个来自表"SummaryCitizenship”的值。该值位于工作表"SummaryCitizenship“的E列中。表"SummaryCitizenship“中值来自的行应与该行的列B ("SummaryCitizenship")相匹配,该行与列B ("6-7 Master 2020-21")相匹配,列C=1,列D=个人责任

我可以将这个公式放入ES列的每个单元格中("6-7 Master 2020-21")

代码语言:javascript
运行
复制
=QUERY(SummaryCitizenship!A1:E12,"select E where B = '"&B2&"' and C = 1 and D = 'Personal Responsibility' ",0)

它是有效的,但B列("6-7 Master 2020-21")中的信息是动态的,一天会变化多次,主要是在工作表中添加新行。这意味着我需要的公式不是在ES中的每个单元格中,而是在单元格ES1或ES2中,并像数组一样影响工作表的其余部分。

我也试过

代码语言:javascript
运行
复制
=INDEX(FILTER(SummaryCitizenship!$A$2:$E,SummaryCitizenship!$B$2:$B=B1,SummaryCitizenship!$C$2:$C=1,SummaryCitizenship!$D$2:$D="Personal Responsibility"),0,5) 

该公式也适用于ES的每个像元,但不适用于ARRAYFORMULA

更详细地解释的老问题:

我需要检查'SummaryCitizenship!‘中的值将表与3个条件进行比较,并从比较中返回一列的值。我可以在每个单元格中使用两种方法;一种是使用过滤器和索引,另一种是使用查询。不幸的是,'6-7 Master 2020-21‘中的行数!工作表是不断变化的,所以我不能简单地将公式粘贴到每个单元格中。这张纸有1700多行,在学年结束前可能会有近3000行。此外,我不知道何时添加新行,因此我不能在需要时弹出并添加公式。我真的需要一些东西,将从单元格引用ES2或ES1的工作。

以下是粘贴到每个单元格中时可用的公式:

代码语言:javascript
运行
复制
=INDEX(FILTER(SummaryCitizenship!$A$2:$E,SummaryCitizenship!$B$2:$B=B1,SummaryCitizenship!$C$2:$C=1,SummaryCitizenship!$D$2:$D="Personal Responsibility"),0,5)
代码语言:javascript
运行
复制
=QUERY(SummaryCitizenship!A1:E12,"select E where B = '"&B2&"' and C = 1 and D = 'Personal Responsibility' ",0)

如果我能让它们中的任何一个与arrayFormula一起工作,我就万事大吉了。可悲的是,他们没有。

在伪代码中,我需要的是:如果学生的唯一ID ( B列"6-7 Master 2020-21“)与表"SummaryCitizenship”列B上的UniqueID匹配,并且Quarter "SummaryCitizenship“列C是1,并且PRIDE Standard "SummaryCitizenship”列D是"Personal Responsibility",则将和点数调整值"SummaryCitizenship“C列返回到"6-7 Master 2020-21”的ES列。对所有行的"6-7大师2020-21!“列E最好在ES1或ES2中具有一个函数条目。

我对汽油了解不多,但我能用它做一点。如果你有一个包含汽油的解决方案,我也会非常感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-11 01:57:16

正确的,INDEX()不能与ArrayFormula一起工作,但是我们可以使用Vlookup来解决这个问题。

这应该会让你得到你想要的:

代码语言:javascript
运行
复制
=ArrayFormula(IFNA(VLOOKUP(B2:B,FILTER(SummaryCitizenship!B2:E,SummaryCitizenship!C2:C=1,SummaryCitizenship!D2:D="Personal Responsibility"),4,0)))

(别忘了清理你的专栏!)

标记的版本:

代码语言:javascript
运行
复制
=ArrayFormula(
    IFNA(                           // Blank if NA
        VLOOKUP(
            B2:B,                   // Unique ID lookup
            FILTER(                 // Gives us the filter conditions on other table
                SummaryCitizenship!B2:E,    // Key column for VLOOKUP is B
                SummaryCitizenship!C2:C=1,
                SummaryCitizenship!D2:D="Personal Responsibility"
            ),
            4,                      // Index to column 4
            0                       // Exact match
        )
    )
)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63834626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档