2017-06-16 3 views
0

En regardant l'exemple sur cette page https://www.extendoffice.com/documents/excel/3269-excel-concatenate-cells-if-not-empty.html (illustré ci-dessous).Concaténation d'un nombre indéterminé de cellules en ignorant les espaces dans Excel

Cette solution ne fonctionne pas si la dernière entrée est vide. Par exemple, dans la colonne A si "Ordre" était absent de A5, le résultat serait "KTE-2015-Ruby-" au lieu de "KTE-2015-Ruby".

Comment procéder pour obtenir le deuxième résultat sans un ensemble d'instructions if vérifiant si cette dernière est la dernière qui n'est pas vide.

Pour plus d'informations, je devrai toujours vérifier le même nombre de lignes pour plus d'informations, mais la quantité de lignes qui contient du texte est indéterminée. En utilisant l'image comme exemple, encore une fois, je vais toujours seulement vérifier les lignes 1-5, mais je ne saurai pas laquelle de ces lignes sont vides.

enter image description here

Répondre

1

Si vous avez Office 365 Excel vous pouvez utiliser TEXTJOIN():

=TEXTJOIN("-",TRUE,A1:A5) 

Si non, vous devez ajouter à la formule pour supprimer le dernier caractère à l'aide GAUCHE()

=LEFT(A1 & "-" & IF(A2<>"",A2 & "-","") & IF(A3<>"",A3 & "-","") & IF(A4<>"",A4 & "-","") & IF(A5<>"",A5 & "-",""),LEN(A1 & "-" & IF(A2<>"",A2 & "-","") & IF(A3<>"",A3 & "-","") & IF(A4<>"",A4 & "-","") & IF(A5<>"",A5 & "-",""))-1) 

Cette formule est un peu différente car elle ajoute toujours - jusqu'à la fin. il supprime ensuite le dernier - avec gauche. Ensuite, peu importe si vous êtes vide ou non, nous aurons toujours le - à la fin qui doit être retiré.


Ou comme @Jeeped a déclaré:

=MID(IF(A1<>"","-" & A1,"") & IF(A2<>"","-" & A2,"") & IF(A3<>"","-" & A3,"") & IF(A4<>"","-" & A4,"") & IF(A5<>"","-" & A5,""),2, 999999) 
+0

réponse parfaite. Je vais devoir attendre les 7 minutes pour le marquer. – user7758051

+0

Serait-il plus facile d'ajouter le délimiteur au * front * de chacun, puis tout enveloppez avec MID (..., 2, 9999999)? – Jeeped

+0

@Jeeped probablement. –

1

Avec un nombre fini de chaînes possibles à concaténer, vous pouvez également utiliser SUBSTITUTION TRIM si vous n'avez pas accès à TEXTJOIN.

=SUBSTITUTE(TRIM(A2&" "&B2&" "&C2), " ", "-") 

enter image description here