Vous cherchez à extraire des mentions d'utilisateurs individuels (@) d'une liste de Tweets dans un document Excel


1

J'ai une liste de ~ 1000 tweets d'un utilisateur que je contrôle. J'aimerais pouvoir savoir combien de mentions utilisateur uniques (c.-à-d. Apparences de @anyUserName) se trouvent dans les chaînes.

Chaque tweet est stocké dans une seule cellule. Je veux pouvoir extraire la chaîne de longueur variable @ de la cellule.

Cela fait quelques jours que je serais ravi de vous aider.

entrez la description de l'image ici

Merci


1
Souhaitez-vous s'il vous plaît ajouter quelques détails? Comment sont structurées les données? Que veux-tu faire exactement. Qu'avez-vous essayé, pourquoi ça ne marche pas? Un exemple serait bien aussi.
Raystafarian

But: Compter le nombre de mentions provenant de @mentions uniques. Les données sont des chaînes à une colonne de tweets incluant au moins un composant de longueur variable commençant par @. Je crois que je dois mettre dans un tableau croisé dynamique, ajouter une colonne et extraire uniquement le composant @ (plus le nom d'utilisateur). Je peux ensuite supprimer les doublons de cette colonne et additionner les uniques.
Adam

Donc, vous voulez prendre le contenu d'une cellule et extraire chaque fois qu'un @apparaît et les caractères qui le suivent jusqu'à ce que vous rencontriez un espace . Ensuite, vous voulez les lister et compter les uniques? Et chaque interpolation est dans une seule cellule dans une colonne spécifique? Où es-tu coincé?
Raystafarian

Désolé Raystafarian, j'ai ajouté une image. Vous avez tout à fait raison. Je souhaite extraire @ plus n'importe quel texte jusqu'à ce que je rencontre un espace. les mentions sont contenues à divers endroits dans une chaîne de texte (un tweet). Je suis coincé dans comment puis-je supprimer la mention de longueur variable et l'insérer dans une autre colonne séparée.
Adam

Réponses:


1

Maintenant, en voyant vos données, si vous voulez extraire plusieurs @ par tweet, vous devez avoir une colonne par instance que vous recherchez:

=IFERROR(MID($A2,FIND("|",SUBSTITUTE($A2,"@","|",B$1)),IFERROR(FIND(" ",$A2,FIND("|",SUBSTITUTE($A2,"@","|",B$1))),LEN($A2)+1)-FIND("|",SUBSTITUTE($A2,"@","|",B$1))),"")

Mettez ceci en B2, et copiez-le et plus.

Cela semble accablant, mais la temporarité remplace la nième instance de @ par un caractère différent (un caractère qui ne sera probablement pas utilisé dans un tweet, un tuyau "|"), puis trouvera cet emplacement et l'espace suivant après. S'il n'y a pas d'espace après, le nom est la dernière chose dans le tweet.

Dans cet exemple, vos tweets sont dans la colonne A à partir de la ligne 2 (supposez que l'en-tête est la ligne 1). Vous pouvez mettre cette formule en B2 et la copier à droite pour autant de colonnes que nécessaire. Il s'attend à ce que votre en-tête soit quel nom extraire. Comme ça:

entrez la description de l'image ici


Salut Madball. J'apprécie vraiment le temps que vous avez pris pour répondre, mais je me demande si vous pourriez clarifier quelque chose. Est-ce que je change les instances de 'A1' dans la cellule que je souhaite que la commande MID cherche? Je devrais vraiment être plus au fait de la plateforme avant que l'IE ne commence à effectuer des recherches complexes.
Adam

Vous mettez la formule dans B1 et faites-la glisser dans la colonne B jusqu'à la fin des données dans la colonne A @Adam
Raystafarian

VRAIMENT apprécier cela, merci à vous deux pour l'aide!
Adam

@ Adam s'il vous plaît voir réponse modifiée, la première version ne traitait pas plusieurs @ dans un tweet.
Madball73

3

Voici une solution VBA. Il suffit de coller le code suivant dans un module (Appuyez sur Alt+ F11et allez à Insert>> Module). Sélectionnez votre liste de tweets et exécutez-le (en appuyant sur F5dans la fenêtre de l'éditeur VBA).

Sub getUniqueUsers()
Dim r As Range, users As Object, Tweets() As Variant, ns As Worksheet
Dim i As Long, j As Long, k As Long
Dim rgx As Object, Matches As Object, M As Object, key As Variant
Set r = Selection
'Load tweets into array for fast processing
Tweets = r.Value
'create scripting objects
Set users = CreateObject("Scripting.dictionary")
Set rgx = CreateObject("vbscript.regexp")
rgx.MultiLine = True
rgx.Pattern = "(^| )(@[^ \t]+)"
'Check each tweet for user mentions with regular expression matching. Add all matches to dictionary.
For j = LBound(Tweets, 2) To UBound(Tweets, 2)
    For i = LBound(Tweets, 1) To UBound(Tweets, 1)
        Set Matches = rgx.Execute(Tweets(i, j))
        For Each M In Matches
            If Not users.exists(M.submatches.Item(1)) Then
                users.Add M.submatches.Item(1), M.submatches.Item(1)
            End If
        Next M
    Next i
Next j
'Output list to new sheet
Set ns = Worksheets.Add
ns.Name = "Unique User Mentions"
k = 1
For Each key In users
    ns.Range("A" & k).Value = key
    k = k + 1
Next key
End Sub

Ce code utilise des objets d'expression régulière et de script de dictionnaire. Il trouvera les mentions de l'utilisateur dans chaque tweet et les stockera dans un dictionnaire. Le dictionnaire est utilisé pour assurer l'unicité. Enfin, les mentions utilisateur uniques sont imprimées dans la colonne A sur une nouvelle feuille.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.