J'ai reformulé cette question car je n'ai pas eu de réponse à la première... peut-être était-ce un peu long.
Mes données originales sont ci-dessous.
Remarque - il ne s'agit que de données de test, dans mon fichier, il s'agit d'une plage déversée créée à partir d'une formule (cf. Formule pour créer un produit cartésien à partir de deux ensembles de données dans une plage déversée pour cette formule)
Date
Texte
29/08/2021
A
29/08/2021
B
29/08/2021
C
30/08/2021
A
30/08/2021
B
30/08/2021
C
J'ajoute des balises XML aux données à l'aide de cette formule (remarque : la balise !null!
c'est là que se situe mon problème) :
Date : ="<a>" & IF($B$4:$B$9=OFFSET($B$4:$B$9,-1,0),"!null!",$B$4:$B$9) & "</a>"
Texte : ="<b>" & $D$4:$D$9 & "</b>"
Et puis FILTERXML
pour transformer les résultats en une plage de déversement à deux colonnes.
=LET(xml,"<y><x>" & TEXTJOIN("",FALSE,D3#,E3#) & "</x></y>",
x,"//x/a",
y,"//x/b",
CHOOSE({1,2},FILTERXML(xml,x),FILTERXML(xml,y)))
Comment puis-je changer le !null!
des marqueurs de place pour les cellules vides réelles ?""
, "�"
, "<a></a>"
et tout ce que j'ai essayé retourne #VALUE!
erreurs.
Réponse :
La réponse donnée par @HasanNahiyanNobel m'a donné l'idée d'utiliser SUBSTITUTE
. Par lui-même, il fait apparaître les dates sous leur valeur numérique et le formatage des cellules n'y change rien. Utilisation de TEXT
le formatage autour du FILTERXML
qui fournit les dates a réglé ce problème.
Ma formule finale est la suivante :
=LET(xml,"<y><x>" & TEXTJOIN("",FALSE,Z4#,AA4#) & "</x></y>",
x,"//x/a",
y,"//x/b",
CHOOSE({1,2},TEXT(SUBSTITUTE(FILTERXML(xml,x),"!null!",""),"dd-mmm"),FILTERXML(xml,y)))