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
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.
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
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.
(26.02.2019, 09: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
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
Hallo Klaus-Dieter,
vielen Dank für deine Lösung!
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
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.
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