ich habe eine Datei mit ca. 95.000 Zeilen. In Spalte E befindet sich immer eine Nachricht, die meistens auch Smilies enthält (UTF-8 formatiert glaube ich). Ich würde jetzt gerne in Spalte V bis AB die Smilies nach Art zählen lassen. Also z.B. in Spalte V alle Smilies in der jeweiligen Nachricht, die ein Herz sind (dabei alle Formate berücksichtigen: ❤️, <3, ❤, ♥, ♡, usw.). Dabei soll in Spalte V angegeben werden, wie oft die Herzen in der jeweiligen Spalte vorkommen (siehe Foto). Gibt es dafür eine Formel?
Ich habe zuerst versucht immer Spalte E zu filtern, was auch klappt, aber irgendwie werden immer nur so rund 1.000 Zeilen berücksichtigt. Somit klappt das mit dem Filtern nicht vollständig und die Angabe der Anzahl der Smilies müsste ich immer noch händisch machen.
Habt ihr vielleicht eine Idee/Formel, wie man die Anzahl der Smileykategorien für alle Nachrichten feststellen könnte?
@Günter: Ich habe es direkt mal ausprobiert. Da ich die Anzahl der Smilies aber pro Zeile brauche, habe ich den Bereich nicht fixiert, dafür aber das Suchkriterium (z.B. Zelle I2=ZÄHLENWENN(A2;smilies!$A$2)). Wenn Smilies alleine in einer Zelle standen, hat dies auch geklappt. Sobald aber mehr Smilies in einer Zelle sind, zählt die Formel leider nicht mehr (siehe angehängte Datei Spalte ZÄHLENWENN❤️).
@Fennek: Eine Beispielsdatei habe ich nun angehängt. Im Reiter "Smilies" habe ich jeden Smiley aufgezählt, der unter die jeweilige Kategorie fällt. Im Reiter "messages" habe ich die Spalten in loves, hahas, wows, sads, likes und angrys aufgeteilt und beispielhaft die Werte eingetragen, die ich für die 95.000 Nachrichten immer entsprechend bräuchte. Mit Makros kenne ich mich nicht wirklich aus, wäre dir/euch aber unendlich dankbar, wenn es hierfür eine Lösung geben würde!
nach meinem jetzigen Kenntnisstand dürfte eine Auswertung, so wie du sie dir vorstellst, nicht mit Formeln zu bewältigen sein. Ob etwas mit Makros lösbar ist, müssen dir allerdings die VBA-Spezialisten sagen - da bin ich leider blank.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row For c = 1 To Len(Cells(i, 1)) UC = WSF.Unicode(Mid(Cells(i, 1), 1, 1)) Debug.Print i, c, Len(Cells(i, 1)), UC t = Application.Match(UC, loves, 0) If Not VBA.IsError(t) Then Res(0) = Res(0) + 1 t = Application.Match(UC, hahas, 0) If Not VBA.IsError(t) Then Res(1) = Res(1) + 1 t = Application.Match(UC, wows, 0) If Not VBA.IsError(t) Then Res(2) = Res(2) + 1 t = Application.Match(UC, sads, 0) If Not VBA.IsError(t) Then Res(3) = Res(3) + 1 t = Application.Match(UC, likes, 0) If Not VBA.IsError(t) Then Res(4) = Res(4) + 1 t = Application.Match(UC, angrys, 0) If Not VBA.IsError(t) Then Res(5) = Res(5) + 1 Next c Debug.Print i, Join(Res, ", ") Erase Res Next i End Sub
Die normalen Text-Funktionen len(), mid() klappen oft nicht. Das erschwert den Zugriff enorm.
Ein erster Check der Suchmaschine gab nicht viel her, ich werde es später noch einmal versuchen.
18.07.2018, 10:43 (Dieser Beitrag wurde zuletzt bearbeitet: 18.07.2018, 10:43 von Fennek.)
Hallo,
es bleibt spannend:
Folgende Zeichen aus der Tabellen wurden mit copy/paste in den Editor übertragen und Leerzeichen eingefügt:
Zitat:❤ ❤ ❤ ❤ ? ? ? ? ? ? ? (aus Zeile 4)
Dieser Code liest die Zeichen aus und zeigt, welche 2 bytes und welche 4 bytes sind:
Code:
Sub T_1() f = "\Smilies exam.txt" Debug.Print Dir(f) Open f For Binary Access Read As #1 ReDim By(LOF(1) - 1&) As Byte Get #1, , By Close #1 For b = 0 To UBound(By) Debug.Print b, By(b) Next b End Sub
Es wäre möglich, die Mail nicht in xl sondern in eine Textdatei zu speichern, aber eine Prüfung mit so vielen Varianten wird recht komplex.
Vielleicht hilft noch ein API Experte.
mfg
Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:1 Nutzer sagt Danke an Fennek für diesen Beitrag 28 • smima
18.07.2018, 18:23 (Dieser Beitrag wurde zuletzt bearbeitet: 18.07.2018, 18:30 von schauan.)
Hallöchen,
ich nutze zwar die eine oder andere API, habe hier aber mal noch eine Formellösung Bei den beiden Angrys in der letzten Zeile ist zu beachten, dass die eigentlich gleich aussehen, aber doch unterschiedlich sind. Markiert mal die "beiden Zeichen" des ersten und überschreibt damit den zweiten und schaut auf die Ergebnisse. Andersrum auch noch mal. Ich habe dann jeweils bei dem einen oder anderen 2 bekommen. Der Trick ist, die zu zählenden Smilies auch in der Formel zu verwenden , daher in Zeile die "Originale" Zeile 1 ist nur informativ. Die Formel aus B3 im gesamten Bereich verteilen …