web-dev-qa-db-fra.com

Google Sheets - REGEX Challenge

J'ai une longue colonne de cellules Google Sheet dont le contenu ressemble à ceci:

#text: Jacob Zuma
@domain: https://www.theguardian.com/world/zuma

#text: World news
@domain: https://www.theguardian.com/world/world

#text: ANC (African National Congress)
@domain: https://www.theguardian.com/world/anc-african-national-congress

#text: South Africa
@domain: https://www.theguardian.com/world/southafrica

#text: Africa
@domain: https://www.theguardian.com/world/africa

J'ai besoin que ça ressemble à ceci:

Jacob Zuma, World news, ANC (African National Congress), South Africa, Africa

En gros, j'essaie de trouver un moyen de supprimer tous les en-têtes (# text + @ domain) et les URL, et de ne placer que les sujets eux-mêmes, tous alignés, séparés par des virgules.

J'apprécierais de l'aide pour savoir comment le faire.

1
Elad Ratson

Voici une solution possible.

Premièrement, je suppose que toutes vos données se trouvent dans la colonne a de la feuille et que chaque ligne de texte séparée par une ligne vierge représente une cellule. De plus, je suppose que le motif de la colonne a se répète exactement après 5 cellules.

  1. Collez la formule suivante dans la colonne b:

    =trim(REGEXEXTRACT(A1,"(?:\s)[^\n]*"))

  2. Collez la formule suivante dans la colonne c:

    =JOIN(", ",indirect(ADDRESS((row()-1)*5+1,2)&":"&ADDRESS((row())*5,2)))

Votre liste de textes souhaités sera dans la colonne c.

1
webstermath

Je pense que la regex est exagérée ici. Manière non regex -

  • Triez la colonne pour avoir tous les mots commençant par "#text:" en tant que groupe
  • Utilisez la fonction Rechercher et remplacer (raccourci clavier Ctrl + H) pour rechercher "#text:" et remplacer le mot par un blanc.
  • En supposant que la plage de cellules A1: A5 contient les mots-clés de votre sujet après le tri, essayez cette formule dans la cellule contenant la liste séparée par des virgules.

    =ArrayFormula(concatenate(A1:A5&", "))

0
mvark

En supposant que les chaînes de la colonne A, essayez

=Textjoin(", ", 1, ArrayFormula(if(len(A1:A), regexextract(A1:A, "\s(.+)\n"),)))

et voir si ça marche?

(Changer la gamme en fonction).

0
JPV