Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: inSTR Funktion

inSTR Funktion
09.03.2018 06:44:40
Antonio
Hallo Veterane,
ich habe in einer Tabellenspalte folgendes:
C E G
D F G A
G E C
K M J H
F G D A
E C G u.s.w.
In einer TextBox gebe ich folgendes ein z.Bsp.: C E G
Ich wurde gerne alle Sätze die die gleiche Buchstaben, egal welche Rehienfolge, in ein Label ausgeben.
Also:
C E G
G E C
E C G
Ich habe im Internet die Funktion "inSTR" gefunden aber nicht richtig verstanden.
Kann mir bitte jamand helfen mein Vorhaben zu realisieren?
Vielen Dank in Voraus
Antonio
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: inSTR Funktion
09.03.2018 07:01:31
MCO
Guten Morgen!
Instr gibt dir die gefundene Position des Suchbegriffes im Text aus. Ist nix drin ist das Ergebnis "0" (Null).
Wenn du also alle Kombinationen haben möchteste müsste die Formel (aus de Kopf) wie folgt lauten:
for i = 2 to 500
if instr(cells(i,Tabellenspalte),such1)>1+instr(cells(i,Tabellenspalte),such2)>+instr(cells(i, _
Tabellenspalte),such3)>1 then
txt = txt& chr(10)& Tabellenzeile
endif
next i
msgbox txt
Gruß, MCO
Anzeige
AW: inSTR Funktion
09.03.2018 07:29:43
Antonio
Hallo MCO, danke zunächst für deine Antwort,
wie gesagt es fällt mir schwer die Funktion zu verstehen, habe wie folgt Versucht zu codieren:
Sub InStr()
Dim i As Integer
Dim Akkord As String
Dim txt As String
Dim such1, such2, such3 As String
Dim objWS   As Worksheet
Set objWS = Worksheets("Tabelle6")
objWS.Activate
Akkord = TextBox4.Text
For i = 1 To 500
If InStr(Cells(i, 7), such1) > 1 + InStr(Cells(i, 7), such2) > InStr(Cells(i, 7), such3) > 1  _
Then
txt = txt & Chr(10) & i
End If
Next i
MsgBox txt
End Sub

MsgBox ist immer leer also = 0 obwohl in der Tabelle C E G vorkommt.
Habe vielleicht im Code was falsch gemacht?
Danke in Voraus
Antonio
Anzeige
AW: inSTR Funktion
09.03.2018 07:35:03
Werner
Hallo Antonio,
du solltest auch deine Variablen such1.... füllen.
Gruß Werner
AW: inSTR Funktion
09.03.2018 07:37:49
fcs
Hallo Antonio,
Makro kann so aussehen.
Gruß
Franz
Sub xxx()
Dim i  As Long, txt As String, such As String, varSuch, j As Integer, _
wks As Worksheet, spa As Long, bolOK As Boolean
Set wks = ActiveSheet
With wks
spa = 1 'Nummer er Süalte mit en Texten
such = InputBox("Suchtext", "Buchstaben in Texten suchen")
If such = "" Then Exit Sub
For i = 2 To .Cells(.Rows.Count, spa).End(xlUp).Row
With .Cells(i, spa)
If Len(.Text) = Len(such) Then
bolOK = True
varSuch = Split(such, " ")
For j = 0 To UBound(varSuch)
If InStr(.Text, varSuch(j)) = 0 Then
bolOK = False
Exit For
End If
Next
If bolOK = True Then
txt = txt & Chr(10) & .Text
End If
End If
End With
Next i
MsgBox txt
End With
End Sub

Anzeige
AW: inSTR Funktion
09.03.2018 08:56:59
Antonio
Hallo Franz,
es funzt, werde mich mit der Funktion beschäftigen. DANKE
@ Danke anch an MCO für den Denkanstöß.
@ Danke auch an Werner.
Antonio
AW: inSTR Funktion
09.03.2018 09:11:58
Antonio
Hallo Franz,
eine Frage noch.
Ich suche in Spalte 7, würde aber gerne die entsprechend einträge von Spalte 1 im Label haben.
Kannst du mir bitte sagen wo und was ich in der Funktion ändern bzw. dazu schreiben soll?
Vielen Dank in Voraus
Antonio
Anzeige
AW: inSTR Funktion
09.03.2018 11:23:10
fcs
Hallo Antonio,
hier anpassen:
          If bolOK = True Then
txt = txt & Chr(10) & wks.Cells(i, 1).Text
End If

Gruß
Franz
AW: inSTR Funktion
09.03.2018 11:31:59
Werner
Hallo Antonio,
oder mit dem Code von MCO
Sub InStr()
Dim i As Integer
Dim Akkord As String
Dim txt As String
Dim such1, such2, such3 As String
Dim objWS   As Worksheet
Set objWS = Worksheets("Tabelle6")
objWS.Activate
Akkord = TextBox4.Text
For i = 1 To 500
If InStr(Cells(i, 7), such1) > 0 And InStr(Cells(i, 7), such2) > 0 _
And InStr(Cells(i, 7), such3) > 0 Then
If txt = "" Then
txt = Cells(i, 1)
Else
txt = txt & Chr(10) & Cells(i, 1)
End If
End If
Next i
MsgBox txt
End Sub
Gruß Werner
Anzeige
AW: inSTR Funktion
09.03.2018 11:47:45
Antonio
Hallo Werner,
S U P E R!!!!
Vielen Dank
Anotnio
Gerne u. Danke für die Rückmeldung. o.w.T.
09.03.2018 12:54:17
Werner
AW: Gerne u. Danke für die Rückmeldung. o.w.T.
12.03.2018 11:57:32
Antonio
Hallo Gemeinde,
muss ich leider wieder was fragen,
wenn ich den Text in TextBox4 selber reinschreibe dann funzt alles perfekt.
Wenn ich aber den Text in TextBox4 aus der Tabelle reinkopiere funzt die Funktion nicht.
Hier die Funktion:
Sub InStr()
Dim i  As Long, txt As String, such As String, varSuch, j As Integer, wks As Worksheet, spa  _
As Long, bolOK As Boolean
Set wks = Worksheets("Tabelle3")
With wks
spa = 3 'Nummer der Spalte mit den Texten
such = TextBox4.Text
If such = "" Then Exit Sub
For i = 2 To .Cells(.Rows.Count, spa).End(xlUp).Row
With .Cells(i, spa)
If Len(.Text) = Len(such) Then
bolOK = True
varSuch = Split(such, " ")
For j = 0 To UBound(varSuch)
If InStr(.Text, varSuch(j)) = 0 Then
bolOK = False
Exit For
End If
Next
If bolOK = True Then
txt = txt & Cells(i, 2) & vbNewLine
End If
End If
End With
Next i
Label2 = txt
End With
End Sub
Die Frage ist: macht es ein Unterschied wie ich den Text in TextBox reinbekomme oder ist mir ein Fehler unterlaufen.
Danke in Voraus
Antonio
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

inSTR Funktion in Excel VBA effektiv nutzen


Schritt-für-Schritt-Anleitung

  1. Öffne dein Excel-Dokument und wechsle in den Visual Basic for Applications (VBA) Editor (Alt + F11).

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf "VBAProject (deinDateiname)", wähle "Einfügen" und dann "Modul".

  3. Füge den folgenden VBA-Code ein, um die InStr-Funktion zu verwenden:

    Sub InStrBeispiel()
       Dim i As Long, txt As String, such As String, varSuch, j As Integer
       Dim wks As Worksheet, spa As Long, bolOK As Boolean
       Set wks = ActiveSheet
    
       spa = 1 'Nummer der Spalte mit den Texten
       such = InputBox("Suchtext eingeben", "Buchstaben in Texten suchen")
       If such = "" Then Exit Sub
    
       For i = 2 To wks.Cells(wks.Rows.Count, spa).End(xlUp).Row
           With wks.Cells(i, spa)
               If Len(.Text) = Len(such) Then
                   bolOK = True
                   varSuch = Split(such, " ")
                   For j = 0 To UBound(varSuch)
                       If InStr(.Text, varSuch(j)) = 0 Then
                           bolOK = False
                           Exit For
                       End If
                   Next
                   If bolOK = True Then
                       txt = txt & vbNewLine & .Text
                   End If
               End If
           End With
       Next i
       MsgBox txt
    End Sub
  4. Führe das Makro aus: Drücke F5 oder gehe auf "Ausführen" > "Sub/UserForm ausführen".


Häufige Fehler und Lösungen

  • Fehler: MsgBox zeigt leeren Text an
    Lösung: Stelle sicher, dass du die Variable such korrekt mit dem gewünschten Suchtext füllst. Überprüfe auch, ob die Zellen tatsächlich den Text enthalten.

  • Fehler: Wenn du Text aus der Tabelle kopierst, funktioniert es nicht
    Lösung: Achte darauf, dass beim Kopieren von Text keine zusätzlichen Leerzeichen oder unsichtbare Zeichen eingefügt werden. Nutze die Trim-Funktion, um unerwünschte Leerzeichen zu entfernen.

  • Fehler bei der Verwendung von InStr
    Lösung: Stelle sicher, dass du die Syntax richtig verwendest. Beispiel: If InStr(Cells(i, 7), such1) > 0 Then.


Alternative Methoden

  • Verwendung von InStrRev: Wenn du von hinten nach vorne suchen möchtest, kannst du die Funktion InStrRev verwenden. Diese ist besonders nützlich, wenn du die letzte Vorkommen eines Textes in einer Zelle finden möchtest.

  • Verwendung von Filter: Statt InStr kannst du auch die Filter-Funktion nutzen, um Teile von Arrays zu durchsuchen und nur die passenden Einträge zu erhalten.


Praktische Beispiele

  • Beispiel 1: Suche nach Buchstaben
    Wenn du in Spalte 1 nach dem Text "C E G" suchst, wird der Code so aussehen:

    such = "C E G"
  • Beispiel 2: Mehrere Suchbegriffe
    Du kannst mehrere Buchstaben gleichzeitig suchen, indem du die Split-Funktion verwendest:

    varSuch = Split("C E G", " ")

Tipps für Profis

  • Nutze die If Instr-Kombination: Wenn du mehrere Bedingungen überprüfen musst, kannst du mehrere If InStr-Abfragen kombinieren, um komplexere Suchen durchzuführen.

  • Verwende Option Explicit: Füge am Anfang deines Moduls Option Explicit hinzu, um sicherzustellen, dass alle Variablen deklariert werden. Das hilft, Fehler zu vermeiden.

  • Debugging: Nutze die Debugging-Funktion im VBA-Editor (z.B. Breakpoints setzen), um den Code Schritt für Schritt zu überprüfen und Fehler zu identifizieren.


FAQ: Häufige Fragen

1. Was macht die InStr-Funktion genau?
Die InStr-Funktion gibt die Position des ersten Vorkommens eines Suchtextes innerhalb eines anderen Textes zurück. Wenn der Text nicht gefunden wird, gibt sie "0" zurück.

2. Wie kann ich die InStr-Funktion in einer Schleife verwenden?
Du kannst InStr in einer "For"-Schleife verwenden, um durch eine Liste von Texten zu iterieren und die Position des Suchtextes in jeder Zelle zu überprüfen.

3. Gibt es eine Möglichkeit, InStr für die Suche nach Teilstrings zu verwenden?
Ja, InStr kann verwendet werden, um nach Teilstrings zu suchen, indem du den gewünschten Text als Suchbegriff übergibst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige