Zeichenkette in spalte prüfen
#1
Hallo zusammen,

ich bin neu hier und hoffe meine Hilfsanfrage ist so richtig, falls nicht bitte korrigieren. 

Folgendes Problem:
Ich habe eine Tabelle mit 4 Spalten und ca. 30.000 Zeilen.


Test-Mappe ist eingefügt.

Überprüft werden soll Spalte B (Inhalt) auf folgende Inhalte: KLZ, RV, ASS, Limit, BTM, Schleuse und Sepa.
Falls einer dieser "Zeichenfolge" in Spalte B steht, soll diese "Zeichenfolge" in Spalte D (Dokumententyp) hineingeschrieben werden, falls keiner der "Zeichenfolgen" in der Spalte B stehen soll "undefiniert" ausgegeben werden.

Ist es möglich dafür eine Formel zu kreieren? 
Wäre eine Super Sache die mir sehr viel zeit erspart!

Vielen Dank schon mal vorab!  :05:

LG
Max


Angehängte Dateien
.xlsx   test-Mappe.xlsx (Größe: 9,27 KB / Downloads: 6)
Top
#2
Hallo,

bei 30000 Zeilen würde ich das mit einem Makro lösen. Statt eines Bildchens wäre die Datei hilfreich gewesen, dann könnte man das testen.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • Cheaterdeluxe
Top
#3
Hallo Klaus-Dieter,

vielen Dank für die schnelle Antwort!

Ich kann  leider nicht die komplette Datei anhängen, Firmengeheimnisse, Datenschutz etc.... Deshalb ist mir das untersagt.

Ich habe alternativ das Bild nun als Tabelle beigefügt. Ich hoffe das reicht zum testen.

LG
Max
Top
#4
Hallo,

Zitat:Ich kann  leider nicht die komplette Datei anhängen, Firmengeheimnisse, Datenschutz etc.... Deshalb ist mir das untersagt.

... eine Beipieldatei enthält keine Firmengeheimnisse, weil sie ganz einfach anonymisiert ist.
Top
#5
(26.02.2019, 10:55)Käpt\n Blaubär schrieb: Hallo,


... eine Beipieldatei enthält keine Firmengeheimnisse, weil sie ganz einfach anonymisiert ist.

Ist bereits angehängt.

LG
Max
Top
#6
Hallo,

habe schon mal ein Makro vorbereitet, mangels Daten musst du das dann selber testen. 

Code:
Option Explicit
Sub auswert()
    Dim intAnz As Integer
    Dim varDatArr As Variant
    Dim c As Range
    Dim ersteAdresse As String
    varDatArr = Array("KLZ", "RV", "ASS", "Limit", "BTM", "Schleuse", "Sepa")
    For intAnz = LBound(varDatArr) To UBound(varDatArr)
        With Worksheets(1).Range("B2:B" & ActiveCell.SpecialCells(xlLastCell).Row)
            Set c = .Find(varDatArr(intAnz), LookIn:=xlValues, LookAt:=xlPart)
            If Not c Is Nothing Then
                ersteAdresse = c.Address
                Do
                    Cells(c.Row, 4) = "undefiniert"
                    Cells(c.Row, 4) = varDatArr(intAnz)
                    Set c = .FindNext(c)
                Loop While Not c Is Nothing And c.Address <> ersteAdresse
            End If
        End With
    Next intAnz
End Sub
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
[-] Folgende(r) 1 Nutzer sagt Danke an Klaus-Dieter für diesen Beitrag:
  • Cheaterdeluxe
Top
#7
Hallo Klaus-Dieter,

vielen Dank für deine Lösung!  Blush 

Die Lösung ist soweit richtig, das einzige was noch nicht funktioniert ist "undefiniert" wenn eines dieser "Zeichenfolge" NICHT in Spalte B steht.

LG
Max
Top
#8
Hallo,

du hast recht, wenn ich hätte testen können, wäre mir aufgefallen, dass ich da auf dem Holzweg war. Die Find-Methode, mit der ich da gearbeitet habe, kann nur bei Treffern aktiv werden. Da müsste man im Nachgang die Spalte überarbeiten, suchen nach leeren Zellen, ersetzen durch deinen Text. Die Alternative wäre sonst eine Schleife gewesen, was deutlich länger gedauert hätte.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#9
Das Ergebnis "undefiniert" ist völlig redundant. Verzichte darauf.

Code:
Sub M_snb()
   sp = Split("KLZ RV ASS Limit BTM Schleuse Sepa")
   sn = Sheet1.Cells(1).CurrentRegion
  
   For j = 1 To UBound(sn)
      For jj = 0 To UBound(sp)
          If InStr(sn(j, 2), sp(jj)) Then Exit For
      Next
      If jj <= UBound(sp) Then sn(j, 4) = sp(jj)
   Next
  
   Sheet1.Cells(1).CurrentRegion = sn
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Cheaterdeluxe
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste