【问题标题】:ArrayFormula - If cell contains match, combine other cells with TEXTJOINArrayFormula - 如果单元格包含匹配项,则将其他单元格与 TEXTJOIN 组合
【发布时间】:2019-11-08 13:41:43
【问题描述】:

我有一个包含角色名称的 Google 表格,以及组名、“选定”和攻击力的相应值。它看起来像这样:

Sheet1

| NAME     | GROUP NAME | SELECTED  | ATTACK POWER |
|:---------|:-----------|----------:|-------------:|
| guile    | Team Red   |         1 |          333 | 
|----------|------------|-----------|--------------|
| blanka   | Team Red   |         1 |           50 |
|----------|------------|-----------|--------------|
| sagat    | Team Red   |           |          500 |
|----------|------------|-----------|--------------|
| ruy      | Team Blue  |         1 |          450 |
|----------|------------|-----------|--------------|
| vega     | Team Blue  |         2 |          150 |

Sheet2

在我的第二张工作表中,我有两列。组名,其中包含来自 Sheet1 的每个团队的名称和名称,其中包含我当前的 ArrayFormula:

=ARRAYFORMULA(TEXTJOIN(CHAR(10); 1; 
 REPT('Sheet1'!A:A; 1*('Sheet1'!B:B=A2))))

使用这个公式,我可以根据组名中的值将所有字符组合到一个单元格中(使用 textjoin,重复行分隔符)。结果如下所示:

| GROUP NAME | NAME                      |
|:-----------|:--------------------------|
| Team Red   | guile                     |         
|            | blanka                    |
|            | sagat                     |
|------------|---------------------------|
| Team Blue  | ruy                       |
|            | vega                      |
|------------|---------------------------|

问题是我只想将字符与选定值1 结合起来。最终结果应如下所示:

| GROUP NAME | NAME                      |
|:-----------|:--------------------------|
| Team Red   | guile                     |         
|            | blanka                    |
|------------|---------------------------|
| Team Blue  | ruy                       |
|------------|---------------------------|

我使用 IF 语句尝试了以下设置,但它只返回一个 FALSE 字符串:

=ARRAYFORMULA(TEXTJOIN(CHAR(10); 1; 
 REPT(IF('Sheet1'!C:C="1";'Sheet1'!A:A); 1*('Sheet1'!B:B=A2))))

这个可以吗?

【问题讨论】:

    标签: filter google-sheets google-sheets-formula array-formulas textjoin


    【解决方案1】:

    粘贴到F2单元格:

    =UNIQUE(FILTER(B:B, C:C=1))
    

    粘贴到G2单元格并向下拖动:

    =TEXTJOIN(CHAR(10), 1, FILTER(A:A, B:B=F2, C:C=1))
    


    G2单元格如:

    =ARRAYFORMULA(TEXTJOIN(CHAR(10), 1, 
     REPT(FILTER(Sheet1!A:A, Sheet1!C:C=1), 1*(FILTER(Sheet1!B:B, Sheet1!C:C=1)=F2))))
    

    【讨论】:

    • 你是我的英雄。正如我所描述的那样令人惊叹。
    • @player0 我是否正确理解上面的第二个 G2 公式示例与第一个 G2 公式完全一样? IE。它没有像 arrayformula 那样正常填充列,而是使用 arrayformula 完成 REPT 过程?如果是这样,有没有办法在 G 列中有一个公式来填充该列? (在这种情况下只有两个实例,但如果有很多......)非常感谢您的任何反馈。
    猜你喜欢
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    相关资源
    最近更新 更多