web-dev-qa-db-fra.com

Problème avec CONCATENATE lorsqu'il est utilisé à l'intérieur de arrayformula

J'essaie de mettre à jour cette formule pour qu'elle fonctionne dans une 'formule de tableau'.

Cela fonctionne seul et quand je le remplis.

=if(E2>0,CONCATENATE(B2, " | ",C2," | ",D2), "")

Cela ne fonctionne pas lorsque des lignes sont ajoutées à la feuille de calcul.

=arrayformula(if(E2:E>0,CONCATENATE(B2, " | ",C2," | ",D2), ""))

Il répète uniquement les valeurs de la ligne 2, encore et encore.

Comment devrais-je écrire "b2", "c2" et "d2" pour qu'ils s'adaptent aux rangées 3, 4, 5, etc., à mesure que le nombre de rangées augmente?

1
Mr. B

S'il vous plaît essayez:

=ArrayFormula(if(E2:E>0,B2:B&" | "&C2:C&" | "&D2:D,""))

Je m'attendais à:

=arrayformula(if(E2:E>0,CONCATENATE(B2:B," | ",C2:C," | ",D2:D),""))

produire les mêmes résultats que ci-dessus, mais ce n’est pas le cas. Alors que normalement & plutôt que CONCATENATE n’est qu’une question de préférence personnelle, il semble qu’ils ne soient pas totalement interchangeables. Aucune mention de cela à CONCATÉNER .

Toutefois, Google Spreadsheets a CONCAT où "L'équivalent de l'opérateur &" " est mentionné . Cette:

Renvoie la concaténation de deux valeurs.

Ainsi, un substitut à & ... est prévu pour la concaténation d'une "paire" à la fois. Par conséquent:

=arrayformula(if(E2:E>0,(concat(concat(concat(B2:B," | "),concat(C2:C," | ")),D2:D)),""))

produit les mêmes résultats "que ci-dessus".

Cela me semble un peu curieux, de même que la désapprobation de M $ par CONCATENATE en faveur de CONCAT, publiée dans Excel 2016 (bien que cela permette de permettre la jonction de plusieurs que deux chaînes ensemble).

2
pnuts