Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1928to1932
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

Zelle auf 2 bestimmte Texte prüfen

Zelle auf 2 bestimmte Texte prüfen
09.05.2023 15:55:21
Stephanie-Alannah

Hallo geschätzte Excel-Spezialisten,

ich benötige eure Hilfe da ich mit den gegoogelten Lösungsansätzen nicht zurecht komme.

Folgendes:

ich möchte den Inhalt einer Zelle in der ein Text steht auf wenigstens 2 bestimmte Texte prüfen und daraus resultiernd in eine weitere Zelle einen veknüpften Text schreiben.

Beispiel: In Zelle B1 steht der Begriff "Powerkabel" dann soll in der Zelle C1 der Text "Kabel bla bla bla" stehen, wenn aber in B1 "Einzellitzen" steht soll in C1 "Litzen bla bla bla" stehen

Es wäre schön, wenn die Formel auf einen Teilbegriff wie "kabel" oder "litze" detektieren könnte weil es nebst dem Begriff "Powerkabel" auch noch "Sensorkabel" gibt, beide fallen in die Kategorie "kabel"

Ich wollte das mit "Suchen" etc. machen aber ich komme mit der Wahr/ Falsch Geschichte nicht klar.

Die Texte in C1 werden mit einer Textverkettung zusammengesetzt, der zusammengesetzte Text kommt dann in einer weiteren Tabelle zur Anzeige. Das mit der Textverkettung ist nicht das Problem.

Kann mir hier jemand helfen? Ich habe einige Stunden aufgewendet um das irgenwie zusammenzubröseln abe ich komm hier nicht weiter.

Herzlichen Dank für eure geschätzte Unterstüttung,

Stephanie :-)

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelle auf 2 bestimmte Texte prüfen
09.05.2023 16:10:17
Rudi Maintaire
Hallo,
eine Möglichkeit:
=WAHL(ISTZAHL(SUCHEN("kabel";B1))*1+ISTZAHL(SUCHEN("litze";B1))*2;"kabel bla";"litze bla";"beides")

Gruß
Rudi


AW: Zelle auf 2 bestimmte Texte prüfen
09.05.2023 21:47:02
Yal
Hallo Stefanie,

eine interessante Frage. Dazu gegenfragen:
_ sind die gesuchten Begriffe alle bekannt? (Kabel und Litzen haben wir schon) oder
_ muss man eher die längste übereinstimmende Textkette in beide Zelle herausfinden? (wenn dann, wie wahrscheinlich ist es, dass es "störende" Worte gibt?)

In beide Fälle wird es wahrscheinlich mit VBA-Code oder einer UDF (eine User-defined function, eine Excel-Formel, die man selbst in VBA programmiert) zu lösen sein. Ich hoffe, das verschreckt dich nicht.

Da es mir langweilig ist (aber vor allem die Frage interessant finde), liefere gleich die Antwort:
Public Function MultiCheck(ByVal ZuPrüfen, ByVal Liste As Range)
Dim Z
Dim erg As String
    ZuPrüfen = CStr(ZuPrüfen)
    For Each Z In Liste
        If InStr(1, ZuPrüfen, Z.Value, vbTextCompare) Then
            erg = erg & ";" & Z.Value
        End If
    Next
    MultiCheck = Mid(erg, 2) 'ohne führende ";"
End Function
Wie geht man damit um?
_ VB-Editor öffnen: Alt+F11, oder Menüband anpassen, Hauptregisterkarte "Entwicklertools" sichtbar machen, darin erste Symbol "Visual Basic" anklicken
_ in VB-Editor einen Modul einfügen: Menü "Einfügen", "Modul"
_ in dem Modul den Code reinkopieren

_ im Excel, eine Liste von Begriffe in A1:A3 eingeben: Kabel, Litzen, Schokolade
_ in D1 die Formel "=Multicheck(B1;$A$1:$A$3)" eintragen
_ in E1 die Formel "=Multicheck(C1;$A$1:$A$3)" eintragen
_ in F1 die Formel "= (D1=E1)"
Multicheck liefert alle Treffer, mit Semikolon getrennt oder leer.

Wenn mehr als ein Treffer ("Schokoladenkabel", lecker! ergibt "Schokolade;Kabel") musste man ein zweiten Check machen:
Public Function Kreuzung(ByVal Target1, ByVal Target2, Optional Trenner = ";")
Dim rA, rB
Dim A, B
    If IsObject(Target1) Then rA = Target1.Cells(1).Value Else rA = Target1
    If IsObject(Target2) Then rB = Target2.Cells(1).Value Else rB = Target2
    For Each A In Split(rA, Trenner)
        For Each B In Split(rB, Trenner)
            If LCase(A) = LCase(B) Then
                Kreuzung = A
                Exit Function 'nach dem erste Treffer aussteigen (Beschleuniger)
            End If
        Next
    Next
End Function
Verwendung:
= Kreuzung (D1;E1)
oder
=Kreuzung(Multicheck(B1;$A$1:$A$3);Multicheck(C1;$A$1:$A$3))

VG
Yal


Anzeige
Unschöne Nullen
09.05.2023 21:52:13
Yal
Beim nicht Treffer, kommt einen "0" raus.

Das wird vermieden, wenn " Als String" am Ende der "Public Function..." eingeführt wird:
Public Function MultiCheck(ByVal ZuPrüfen, ByVal Liste As Range) As String
Public Function Kreuzung(ByVal Target1, ByVal Target2, Optional Trenner = ";") As String
VG
Yal


AW: Zelle auf 2 bestimmte Texte prüfen
10.05.2023 09:04:05
Stephanie Alannah
Hallo Yal,

also ersmal vielen Dank für dein Interesse und nein erschrecken tut es mich nicht wirklich es ist einfach so, dass ich nicht coden kann. Mir fehlt das grundsätzliche Wissen zu strukturierter Programierung. Klar ich weiss aus meiner Jugendzeit mit dem C64 vor gut 40 Jahren noch was eine For Next Schleife ist aber dann hört es schnell mal auf. Ich hatte verschiedene Anläufe unternommen eine Sprache zu erlernen habe aber immer schnell die Lust verloren, leider.

Die Anfrage kommt daher, dass ich eine Tabelle erstellt habe die als Planungs- und Kalkulationshilfe für Projekte dient. Die Haupttabelle wird von verschiedenen Hilfstabellen mit Informationen befüllt, damit die Texte für die jeweiligen Artikel in der Haupttabelle immer gleich sind. Die gesuchten Begriffe sind jeweils bekannt und es gibt auch nicht soviele verschiedene Begriffe, die Länge spielt insofern keine Rolle es geht nur um die Schlüsselbegriffe.

Die Hilfstabellen beinhalten die verschiedenen Teilinformationen wie zum Beispiel technische Angaben über die verwendeten Kabel oder die spezifischen Steckerkonfigurationen. In der Hauptabelle werden Informationen dann aufbereitet dargestellt und mit Preisangaben aus der Preistabelle versehen.

Zur korrekten Verknüpfung der einzelnen Textelemente hat sich in der einen Hilfstabelle "Kabel" die folgende Aufgabe ergeben:

Kucke in der Zelle wo die Artikelkategorie steht nach ob darin der Begriff "Kabel" vorhanden ist, wenn ja dann benutze die Textverkettung "Variante Kabel", wenn in der Artikelkategorie der Begriff "Litzen" steht, dann benutze die Textverkettung "Variante Litzen".

Die Artikelkategorie kann sein: Powerkabel, Sensorkabel, Buskabel, etc oder Einzellitzen Blablalitzen etc.

Ich hoffe das reicht um die Aufgabe und den Hintergrund etwas zu erläutern.

Viele Grüsse und nochmals danke, Stephanie :-)


Anzeige
AW: Zelle auf 2 bestimmte Texte prüfen
10.05.2023 10:51:33
Yal
Hallo Stefanie,

meinerseits ist es nur wichtig, ob Du mit meiner Lösungsvorschlag zuercht kommst. Es setzte voraus, dass die Liste der Begriff fest ist, was auch der Fall ist. VBA-Kenntnisse sind nicht notwendig. Man muss nur wissen, wo der Code abzulegen ist.

Noch einen Punkt: "Unterbegriff" sollten vermieden werden: wenn z.B. "Buskabel" und "Canbuskabel" vorhanden wären. Der längste Begriff müsste in der Liste immer zuerst vorkommen. Erst bei "Kreuzung" wird es relevant, sodass wenn in Zelle1 und in Zelle2 "Canbuskabel;Buskabel" gefunden wird, daraus nur "Canbuskabel" behalten wird.

Es sieht so aus als Du das Verfahren verwenden wirst, um die Information zu extrahieren, dann anschliessend die Formel in Wert wandeln und das gesamte VBA-Gedöns wieder wegschmeissen. Daher wird es nur eine kurzes Vergnügen mit dem VBA. Wenn Du die Datei als xlsx und nicht als xlsm spiecherst, sind die Makros sowieso weg. Wandle die Formel in Werte davor.

VG
Yal

Anzeige

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige