zu erst einmal ein dickes Lob an dieses gesamte Angebot, ich habe hier schon sehr viele Lösungen gefunden, nur eben diese eine nicht.
Die Ausgangssituation. Ich habe eine lange Tabelle mit verschiedenen Spalten (z.B. Kostenstelle, Betrag, Kostenart etc.) und vielen Einträgen. Diese Einträge möchte ich nun mit einem Makro filtern. Das Makro habe ich soweit auch schon erstellt. Hier der Code:
----------------------------------
Sub Delleer()
Dim zeile As Integer
Dim spalte As Integer
Dim last_row As Integer
Dim last_column As Integer
Dim anz_del As Integer
Dim kz_loe As String
'
' Tabellenblatt öffnen
Sheets("Einzelnachweis (2)").Select
' Tabellengrösse ermitteln
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate
last_row = ActiveCell.Row
last_column = ActiveCell.Column
'Parameter füllen
zeile = 2
While zeile <= last_row
'Prüfen ob alle Spaltenwert übereinstimmt
If Cells(zeile, 4) <> "2113" Then
Rows(zeile).Select
Selection.Delete
'Tabellenhöhe reduziert sich
last_row = last_row - 1
Else
If Cells(zeile, 3) = "Bewirtungsk. Personal" Then
Cells(zeile, 3) = "Bewirtungskosten"
End If
zeile = zeile + 1
End If
Wend
MsgBox ("Löschen beendet")
End Sub
-----------------------------------
Es löscht alle Zeilen, die in der Spalte Kostenstelle nicht mit einer bestimmten (in diesem Fall KSt 2113) gefüllt sind. Zum anderen sollen diverse Kostenarten zusammengefasst werden. Dafür habe ich im unteren Bereich die IF-Schleife eingebaut (z.B. sollen alle Bewirtungskosten auch so umbenannt werden [Bewirtungsk. Personal, Bewirtungsk. steuerfrei ...]).
Meine Fragen bzw. Probleme.
1) Zum einen ist das Makro relativ langsam, was bei mehreren tausend Datensätzen zu einem Problem wird, hat hier vielleicht jemand einen Verbesserungsvorschlag?
2) Zum anderen weiß ich nicht genau, wie ich mit der IF-Schleife mehrere Argumente abfragen kann (z.B. If Cells(zeile, 3) = "Bewirtungsk. Personal" OR "Bewirtungsk. steuerfrei" ... THEN ...).
3) Zu guter Letzt würde ich gerne noch wissen, wie ich den absoluten Wert "2113" durch einen Bezug zu einer Zelle in einer anderen Tabelle ersetzen kann.
Ich hoffe, mich unmissverständlich ausgedrückt zu haben und bin für die ein oder andere Antwort sehr dankbar.
Gruß und schönen Tag
Thorsten