Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
428to432
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
428to432
428to432
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zellen mit Text auf Gemainsamkeiten vergleichen

Zellen mit Text auf Gemainsamkeiten vergleichen
15.05.2004 15:54:07
Val-Harris
Hallo liebe Wissende,
Ich möchte 2 Zellen miteinander Vergleichen und herausfinden, ob ein Wort in beiden Zellen auftaucht. Dabei möchte ich das Wort jedoch nicht festlegen, es interessiert mich auch nicht welches Wort gleich ist. Ich möchte nur wissen, ob eine Zeichenfolge in beiden Zellen gleich ist. Der Vergleich sollte jedoch nicht schon den Wert "wahr" liefern, wenn nur ein Buchstabe gleich ist. 4 Zeichen in Folge währen da schon besser. Es sollte auch unabhängig von der Position der Zeichenfolge in den beiden Zellen sein.
z.B.
A1= "Das Wetter ist schön"
A2= "Es lag wohl am Wetter"
gewünschtes Ergebnis : "Wahr", da die zeichenfolge "Wetter" in beiden vorkommt.
Es sollte aber auch mit Sonne und Regen klappen, auch wenn die Satzstellung anders ist.
Gruss Val-Harris

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen mit Text auf Gemainsamkeiten vergleichen
15.05.2004 16:41:47
Christoph
Hallo,
die folgende benutzerdef. Funktion vergleicht ganze Wörter, getrennt durch ein Leerzeichen (ab XL2000)
Bsp:
also Wetter und Wetter ergibt WAHR,
aber Wetter und Wette ergibt FALSCH
Ein Punkt am Satzende wird nicht berücksichtigt.
Aufrufen in Excel mit:
=VGL(dein Text1;dein Text2)
Gruß
Christoph
Option Explicit
Public

Function VGL(Text1$, Text2$)
Dim a, b, i%, j%, BoFnd As Boolean
If Right(Text1, 1) = "." Then Text1 = Left(Text1, Len(Text1) - 1)
If Right(Text1, 1) = "." Then Text1 = Left(Text1, Len(Text1) - 1)
a = Split(Text1)
b = Split(Text2)
For i = 0 To UBound(a)
For j = 0 To UBound(b)
If b(j) = a(i) Then
BoFnd = True
Exit For
Exit For
End If
Next
Next
VGL = BoFnd
End Function

Anzeige
AW: Zellen mit Text auf Gemainsamkeiten vergleiche
Val-Harris
Vielen Dank für die schnellen Antworten.
Grüsse Val-Harris
AW: Zellen mit Text auf Gemainsamkeiten vergleichen
15.05.2004 16:50:52
GraFri
Hallo


'vergleicht Zeichenfolge mit Länge 4
Sub Zeichenfolge_vergleichen()
Dim n       As Integer
Dim Zelle1
Dim Zelle2
Set Zelle1 = Worksheets("Tabelle1").Range("A1")
Set Zelle2 = Worksheets("Tabelle1").Range("A2")
'ohne Leerzeichen
If Len(Zelle1.Value) Then
    For n = 1 To Len(Zelle1.Value) - 4
        If InStr(n, Zelle2.Value, Mid(Zelle1, n, 4)) And InStr(Mid(Zelle1, n, 4), " ") = 0 Then
            MsgBox Mid(Zelle1, n, 4) & " kommt in beiden Zellen vor"
            Exit Sub
        End If
    Next n
End If
'mit Leerzeichen
If Len(Zelle1.Value) Then
    For n = 1 To Len(Zelle1.Value) - 4
        If InStr(n, Zelle2.Value, Mid(Zelle1, n, 4)) Then
            MsgBox Mid(Zelle1, n, 4) & " kommt in beiden Zellen vor"
            Exit Sub
        End If
    Next n
End If
End Sub


Mit freundlichen Grüßen, GraFri
Anzeige
AW:Zellen mit Text auf Gemeinsamkeiten vergleichen
WernerB.
Hallo Val-Harris,
ich habe Dir mal die nachstehende benutzerdefinierte Funktion gebastelt.
In der ersten Zelle wird jede Zeichenfolge, die zwischen zwei Leerzeichen steht, als Suchbegriff erkannt (aber auch das erste und das letzte Wort, obwohl hier das erste bzw. das letzte Leerzeichen fehlt).
Diese Suchbegriffe werden in der zweiten Zelle gesucht und bei einer Übereinstimmung wird "WAHR" ausgegeben.
In eine dritte Zelle muß die Funktion so eingetragen werden:
=SUWO(A1;A2)
Die Funktion gehört in ein normales Standard-Modul:
Option Explicit

Function SUWO(Z1 As Range, Z2 As Range) As Boolean
Dim Tx As String, sW As String
Dim p1 As Integer, p2 As Integer
If VBA.Strings.Len(Z1.Text) = 0 Then Exit Function
Tx = Z1.Text & " "
p1 = 1
If VBA.Strings.InStr(Tx, " ") > 0 Then
p2 = VBA.Strings.InStr(Tx, " ")
Else
p2 = VBA.Strings.Len(Tx) + 1
End If
Do While p2 > 0
sW = VBA.Strings.Mid(Tx, p1, p2 - p1)
If VBA.Strings.InStr(Z2.Text, sW) > 0 Then
SUWO = True
Exit Do
End If
If InStr(p2 + 1, Tx, " ") > 0 Then
p1 = p2 + 1
p2 = InStr(p2 + 1, Tx, " ")
Else
Exit Do
End If
Loop
End Function

Viel Erfolg wünscht
WernerB.
Anzeige
AW: AW:Zellen mit Text auf Gemeinsamkeiten verglei
Val-Harris
Hallo Werner,
vielen Dank.
Wenn Du mir vielleicht jetzt noch erklären kannst, was ich damit machen mus, um das in Exel einzufügen, wäre mein Glück vollkommen.
Ich habe leider keine Ahnung, was ich machen muss, um eine solche Funktion einzubauen.
Grüsse Val-Harris
AW: AW:Zellen mit Text auf Gemeinsamkeiten verglei
WernerB.
Hallo Val-Harris,
versuche es mal nach dieser Anleitung:
1. Drücke Alt + F11; der VB-Editor öffnet sich.
2. Markiere auf der linken Seite "VBAProject (DeineMappe)"
3. Drücke oben auf der Symbolleiste auf "Einfügen/Modul"
4. Auf der rechten Seite sollte jetzt eine große weiße Fläche erscheinen (=Modul)
5. In diese weiße Fläche kopierst Du meinen Text von "Option Explicit" bis "End Funktion" (jeweils einschließlich).
6. Drücke Alt + Q, der VB-Editor wird geschlossen.
7. Trage In eine freie Zelle die Funktion so ein:
=SUWO(A1;A2)
8. Wenn Du die Mappe speicherst, steht Dir diese Funktion in dieser Mappe immer zur Verfügung.
Die Funktion habe ich noch dahingehend geändert, dass der Suchtext mindestens vier Zeichen lang sein muss. Das schließt natürlich nicht aus, dass der Suchtext "Sultan" auch in dem Wort "Sultanine" gefunden wird.
Option Explicit

Function SUWO(Z1 As Range, Z2 As Range) As Boolean
Dim Tx As String, sW As String
Dim p1 As Integer, p2 As Integer
If VBA.Strings.Len(Z1.Text) = 0 Then Exit Function
Tx = Z1.Text & " "
p1 = 1
If VBA.Strings.InStr(Tx, " ") > 0 Then
p2 = VBA.Strings.InStr(Tx, " ")
Else
p2 = VBA.Strings.Len(Tx) + 1
End If
Do While p2 > 0
sW = VBA.Strings.Mid(Tx, p1, p2 - p1)
If VBA.Strings.Len(sW) > 3 And VBA.Strings.InStr(Z2.Text, sW) > 0 Then
SUWO = True
Exit Do
End If
If InStr(p2 + 1, Tx, " ") > 0 Then
p1 = p2 + 1
p2 = InStr(p2 + 1, Tx, " ")
Else
Exit Do
End If
Loop
End Function

Viel Erfolg wünscht
WernerB.
Anzeige
schau da noch mach drüber...
15.05.2004 17:50:56
Christoph
Hi Werner,
ja, bei meiner Version war ja auch noch ein SchreibFehler drin.
(zweimal "If Right(Text1, 1) = "." Then Text1 = Left(Text1, Len(Text1) - 1)"
statt beim zweiten mal dann jeweils "Text2")
Aber wenn ich bei dir in A1: "E" eingebe und in A2: "Ess", dann ergibt das WAHR
Gruß
Christoph
AW: schau da noch mal drüber...
WernerB.
Hallo Christoph,
vielen Dank für Deinen Hinweis.
Siehe bitte meine Antwort an Val-Harris; aber nach allen Fliegen kann ich auch nicht schlagen ..,
Gruß
WernerB.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige