ArrayFormula-如果单元格包含匹配项,则将其他单元格与TEXTJOIN组合

时间:2019-06-26 14:56:10

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

我有一个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))))

这可以是一个吗?

1 个答案:

答案 0 :(得分:1)

粘贴到 F2 单元格中:

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

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

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

0


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))))

enter image description here