Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1576to1580
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Anzahl der Wörte in A zählen und mit B vergl

VBA: Anzahl der Wörte in A zählen und mit B vergl
09.09.2017 08:06:22
Darren
Hallo,
in einer Zelle/Variable steht:
VariableA = "Tasse Kaffee Guten Morgen"
VariableB = "Kaffee Guten Morgen"
Die Funktion soll die Inhalte vergleichen, ob es gleich ist.
a) Dabei möchte ich, dass man die Anzahl der Wörter in einer Variable feststellt
b) Ich möchte wissen, wieviele gleiche Wörter in B von A vorkommen und in einer VariableC ausgeben, was nicht gefunden wurde.
Ideen, Funktionen, Codes?
Gruß
Darren

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
VBA: Anzahl der Wörte in A zählen und mit B vergl
09.09.2017 08:10:30
Hajo_Zi
zu vor a
=variableA=variableB

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
AW: VBA: Anzahl der Wörte in A zählen und mit B vergl
09.09.2017 08:27:02
Darren
Danke Hajo für den Anfang. Die gibt mir aber nur Wahr oder Falsch.
Sub forum() VariableA = "Tasse Kaffee Guten Morgen" VariableB = "Kaffee Guten Morgen" a = VariableA = VariableB End Sub Gruß
Darren
Anzeige
Vergleich
09.09.2017 08:30:49
Hajo_Zi
das Ergebnis eines Vergleiches ist immer Wahr oder Falsch, ein anderes Ergebnis bekommst Du nicht.
Gruß Hajo
AW: Vergleich
09.09.2017 08:31:45
Darren
Klar, aber die Fragen sind in a) und b)
AW: Vergleich
09.09.2017 09:21:37
Werner
Hallo Darren,
Antwort zu Frage A:
Die Anzahl Wörter könntest du zählen, indem du die Leerzeichen im String zählst.
Public Sub Anzahl_Worte()
Dim VariableA As String
Dim loAnzahl As Long
VatiableA = "Tasse Kaffee guten Morgen"
loAnzahl = Len(VariableA) - Len(Replace(VariableA, " ", "")) + 1
MsgBox "In der Zelle stehen " & loAnzahl & " Worte"
End Sub
Gruß Werner
Anzeige
AW: Vergleich
09.09.2017 09:36:08
Darren
Vielen Dank zu der Antwort zu a)
Es funktioniert.
Erst dachte ich, dass es nicht funktioniert, dann habe ich aber erst jetzt entdeckt, dass VatiableA = VariableA heißen muss :-D
Wahrscheinlich muss ich am Ende eines Satzes noch etwas prüfen, wenn ein Kollege ein "space" eingibt. Sonst würden es 5 Wörter sein, obwohl es nur 4 sind.
jemand eine Idee zu b) ?
AW: Vergleich Nein, dies ist gelöst
09.09.2017 09:49:11
Hajo_Zi
Trim()
es geht nicht mehr um Vergleich.
Gruß Hajo
AW: Vergleich Nein, dies ist gelöst
09.09.2017 10:00:23
Darren
Danke Hajo zu a) Das ganze gehört zum Thema Vergleich.
Jemand eine Idee zu b) ?
Hier der Code zu a:
Public Sub Anzahl_Worte()
Dim VariableA As String
Dim loAnzahl As Long
VariableA = "Tasse Kaffee guten Morgen "
VariableA = Trim(VariableA)
If Right(VariableA, 1) = " " Then
loAnzahl = Len(VariableA)
VariableA = Left(VariableA, loAnzahl - 1)
Stop
End If
loAnzahl = Len(VariableA)
loAnzahl = Len(VariableA) - Len(Replace(VariableA, " ", "")) + 1
MsgBox "In der Zelle stehen " & loAnzahl & " Worte"
End Sub

Anzeige
mit Split()
09.09.2017 10:26:06
Matthias
Hallo
Schreib doch die Strings in die Tabelle
Bsp.
Tabelle1

 A
1 Tasse Kaffee guten Morgen
2 
3Tasse
4Kaffee
5guten
6Morgen


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Code:
Option Explicit
Public Sub Anzahl_Worte()
Dim VariableA As String
Dim loAnzahl As Long
Dim MyArr As Variant, x&
VariableA = Cells(1, 1).Value
VariableA = Trim(VariableA)
If Right(VariableA, 1) = " " Then
loAnzahl = Len(VariableA)
VariableA = Left(VariableA, loAnzahl - 1)
Stop
End If
loAnzahl = Len(VariableA)
loAnzahl = Len(VariableA) - Len(Replace(VariableA, " ", "")) + 1
MsgBox "In der Zelle stehen " & loAnzahl & " Worte"
MyArr = Split(VariableA, " ")
For x = 1 To loAnzahl
Cells(x + 2, 1) = MyArr(x - 1)
Next
End Sub

Das Gleiche machst Du mit der anderen Variable
In der Tabelle kannst Du dann mit Zählenwenn() prüfen.
Hat ein Formelergebnis 0(Null) so ist dieses Wort
in der anderen Variable nicht vorhanden.
Tabelle2

 ABC
1Tasse Kaffee Guten MorgenKaffee Guten Morgen 
23 Leerzeichen2 Leerzeichen3
3  Zählen
4TasseTasse1
5KaffeeKaffee1
6GutenGuten1
7Morgen 0
8  0


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Gruß Matthias
Anzeige
Korrektur ... welches Wort fehlt
09.09.2017 11:56:06
Matthias
Hallo
Sorry, hatte für Spalte(B) nochmal A1 eingelesen.
Ein schlaue Fuchs hat es sicher bemerkt ;-)
Die Bereiche können/müssen angepasst werden,
ebenso ob man aus A in B sucht oder aus B in A sucht.
hier wird geprüft welcher String aus A in B vorhanden ist
sieht also eigentlich so aus:
Tabelle2

 ABC
1Tasse Kaffee Guten MorgenKaffee Guten Morgen 
23 Leerzeichen2 Leerzeichen3
3  Zählen
4TasseKaffee0
5KaffeeGuten1
6GutenMorgen1
7Morgen 1
8  0

Formeln der Tabelle
ZelleFormel
A2=LÄNGE(A1)-LÄNGE(WECHSELN(A1;" ";""))
B2=LÄNGE(B1)-LÄNGE(WECHSELN(B1;" ";""))
C2=SUMME(C4:C8)
C4=ZÄHLENWENN($B$4:$B$8;A4)
C5=ZÄHLENWENN($B$4:$B$8;A5)
C6=ZÄHLENWENN($B$4:$B$8;A6)
C7=ZÄHLENWENN($B$4:$B$8;A7)
C8=ZÄHLENWENN($B$4:$B$8;A8)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
Aber das Bsp. von ransi ist perfekt, das würde ich eher auch benutzen :-)
Ich wollte jetzt nur meinen Darstellungsfehler korrigieren.
Gruß Matthias
Anzeige
AW: Vergleich
09.09.2017 10:04:21
Werner
Hallo Darren,
die Problematik mit mehrfach vorkommenden Leerzeichen zwischen den Wörtern, bzw. Leerzeichen am Anfang oder am Ende kannst du durch Worksheetfunction.Trim eliminieren.
Hier im Beispiel wird der Wert der Variablen aus der Zelle A1 geholt, dort steht also dein Text. Teste mal.
Public Sub Anzahl_Worte()
Dim VariableA As String
Dim loAnzahl As Long
VariableA = WorksheetFunction.Trim(Range("A1"))
loAnzahl = Len(VariableA) - Len(Replace(VariableA, " ", "")) + 1
MsgBox "In der Zelle stehen " & loAnzahl & " Worte"
End Sub
Gruß Werner
Anzeige
"[a-zA-ZäöüÄÖÜß]+"
09.09.2017 10:53:36
ransi
HAllo Darren,
Ich habs so verstanden:
Tabelle1

 AB
1Tasse Kaffee Guten Morgen Tee 
2Kaffee Guten Morgen 
3  


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub aufruf()
    Dim vntResult As Variant
    vntResult = VariableC(Range("A2"), Range("A1"))
    MsgBox vntResult(0) & vbCrLf & vntResult(1)
End Sub


Public Function VariableC(VariableA, VariableB)
    Dim Regex As Object
    Dim objMatches As Object
    Dim objMatch As Object
    Dim objDic As Object
    Dim I As Integer
    Redim out(I)
    Set Regex = CreateObject("vbScript.regexp")
    Set objDic = CreateObject("scripting.Dictionary")
    With Regex
        .Pattern = "[a-zA-ZäöüÄÖÜß]+"
        .Global = True
        Set objMatches = .Execute(VariableA)
        For Each objMatch In objMatches
            objDic(objMatch.Value) = 0
        Next
        Set objMatches = .Execute(VariableB)
        For Each objMatch In objMatches
            If Not objDic.exists(objMatch.Value) Then
                Redim Preserve out(I)
                out(I) = objMatch
                I = I + 1
            End If
        Next
    End With
    VariableC = Array(Join(out, ", "), I)
End Function


ransi
Anzeige

329 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige