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

Buchstabensuche

Buchstabensuche
28.02.2006 23:01:53
Micha
Hallo zusammen,
vielleicht könnt ihr mir helfen. Wenn es mit Excel-Formeln geht gerne, VBA mit Erklärungen helfen mir aber auch weiter.
In der ersten Spalte stehen Worte,z.B.
A1: Apfel
A2: Birne
A3: Kirsche
A4: Banane
A5: Orange
dann habe ich einen ungeordneten Buchstabenmix entweder in einer Zelle
(z.B. B1: AABENN)
oder in meherern Zellen
(z.B. B1:A; B2:A; B3:B; B4:E; B5:N; B6:N)
Voraussetzung ist, dass diese Buchstaben in der Richtigen Reihenfolge (ohne Beachtung der Groß-und Kleinschreibung) definitiv ein Wort aus Spalte A ergeben.
Dabei gibt es
a) diese Buchstabenkombination in Spalte A nur 1 Mal
b) diese Buchstabenkombination in Spalte A häufiger in verschiedener Zusammensetzung (z.B. A4: Banane, A6: Benana)
In C1 möchte ich nun das Spalte A "durchsucht" wird mit den Kriterien aus Spalte "B" und mir entwerder das/die richtige(n) Wort(e) ausgibt.
Denkt ihr, dass das Möglich ist.
Danke für eure Hilfe und Grüße
Micha

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Buchstabensuche
28.02.2006 23:38:52
{Boris}
Hi Micha,
bezogen auf die Variante, in der die Buchstaben in B1 bis B6 stehen:
=SUMMENPRODUKT(ZÄHLENWENN(A1;"*"&B$1:B$6&"*"))=LÄNGE(A1)
Stehen die Buchstaben als String in B1, dann:
=SUMMENPRODUKT(ZÄHLENWENN(A1;"*"&TEIL($B$1;ZEILE(INDIREKT("1:"&LÄNGE($B$1)));1)&"*"))=LÄNGE(A1)
So oder so: Formeln runterkopieren. WAHR bedeutet, dass ein Treffer vorliegt.
Grüße Boris
AW: Buchstabensuche
01.03.2006 03:25:44
Micha
Hi Boris,
danke für die Antwort. Es funtioniert beides. (Außer das "Zählenwenn" bei reinen Ziffernfolgen den Dienst versagt).
Habe bei der ersten Variante statt:
=SUMMENPRODUKT(ZÄHLENWENN(A1;"*"&B$1:B$6&"*"))=LÄNGE(A1)
=SUMMENPRODUKT(ZÄHLENWENN($A1;"*"&$B$1:INDIREKT("B"&LÄNGE($A1))&"*"))=LÄNGE($A1),
damit bin ich nicht auf 6 Zeichen festgelegt.
Bei der zweiten Variante habe ich noch eine ZWEITE Abfrage zugefügt:
=WENN(UND(SUMMENPRODUKT(ZÄHLENWENN($A1;"*"&TEIL($E$1;ZEILE(INDIREKT("1:"&LÄNGE($E$1)));1)&"*"))=LÄNGE($A1);LÄNGE($A1)=LÄNGE($E$1));WAHR;FALSCH)
, damit bekomme ich keine zufälligen "WAHR" - Aussagen, wenn ein längeres Wort in Spalte A zufällig durch "Zählenwenn" auf die Länge des gesuchten Buchstabenstrings kommt.
______________________________________________________________________________________
Wenn das die Kür war, hab ich noch eine Frage zur Pflicht:
Herunterkopieren geht durch Autofüllung zügig. Gibt es trotzdem eine Formel, die "automatisch" alle Zeilen durchgeht und mir die Zeile nennt, inder dann das WAHR steht (vorausgesetzt es gibt nur eine Übereinstimmung) oder mir mehrere Zeilen nennt, wenn es
mehrer Übereinstimmungen gibt
Danke und viele Grüße Micha
Anzeige
AW: Buchstabensuche - VBA-Variante
01.03.2006 11:14:30
Franz
Hallo Boris,
hier auch noch eine VBA-Variante. Diese arbeitet mit einer benutzerdefinierten Funktion, die in C1 alle gefundenen Wörter ausspuckt.
https://www.herber.de/bbs/user/31529.xls
Gruß
Franz
AW: Buchstabensuche - VBA-Variante-Nachtrag
01.03.2006 13:02:45
Franz
Hallo Micha,
die Formel-Lösung von Boris hat mich inspiriert, meine benutzerdefinierte Funktion nochmal zu überarbeiten. So schaut sie jetzt aus:

Function Loesung(Worte As Range, Wort As String) As String
'Sucht Wörter, die mit einem Buchstaben-Mix übereinstimmen
'Worte: ist der Bereich mit den zu durchsuchenden Wörten
'Wort:  der Text/die Zelle mit dem Buchstabensalat
Dim I As Integer, J As Integer, Wort2 As String, Vergleich As Boolean
Wort = StrConv(Wort, vbLowerCase) 'Buchstabensalat in Kleinbuchstaben umwandeln
For I = 1 To Worte.Rows.Count
Vergleich = False
If IsEmpty(Worte(I, 1)) = False Then
If Len(Wort) = Len(Worte(I, 1)) Then
Wort2 = StrConv(Worte(I, 1), vbLowerCase) 'Wort in Kleinbuchstaben umwandeln
For J = 1 To Len(Wort)
If Anzahl(Mid(Wort, J, 1), Wort) = Anzahl(Mid(Wort, J, 1), Wort2) Then
Vergleich = True
Else
Vergleich = False
Exit For
End If
Next
If Vergleich = True Then Loesung = Loesung & Worte(I, 1) & "  "
End If
End If
Next I
End Function
Function Anzahl(Zeichen As String, Wort As String) As Integer
' Zählt, wie oft ein Buchstabe im Wort vorkommt
If Len(Wort) = 0 Then Exit Function
For J = 1 To Len(Wort)
If Mid(Wort, J, 1) = Zeichen Then Anzahl = Anzahl + 1
Next J
End Function

Gruß
Franz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige