Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
152to156
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
152to156
152to156
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

IF-Anweisung mit mehreren Argumenten

IF-Anweisung mit mehreren Argumenten
28.08.2002 08:29:28
beckersbest
Guten Morgen,

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

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: IF-Anweisung mit mehreren Argumenten
28.08.2002 08:35:16
Harald Kapp
Hallo Thorsten,

zu 1) Versuch mal, vor den Code und nach den Code die folgenden Anweisungen zu setzen:
Application.ScreenUpdating = False
... Dein Code hier ...
Application.ScreenUpdating = True

Das müsste den Ablauf beschleunigen, weil nicht jedes Mal der Bildschirm neu gezeichnet wird.

zu 2) Das geht so:
if (bedingung1) OR (Bedingung2) Or (Bedingung3) Then

zu 3) Das müsste so gehen
If Cells(zeile, 4) <> Sheets("Tabelle2").Cells(Row, Column) Then

Gruß Harald

Re: IF-Anweisung mit mehreren Argumenten
28.08.2002 09:33:16
beckersbest
Guten Morgen Harald,

vielen Dank für die schnelle Antwort.

Die Antworten für meine Fragen 1) und 3) waren genau die, die ich suchte.
Bei Frage 1) hat sich allerdings noch das Problem aufgetan, wenn ich das Makro einmal habe durchlaufen lassen, liegt der Wert der letzten Zelle (xlCellTypeLastCell) nach wie vor auf dem Ursprungswert, sprich, wenn ich das Makro ein weiteres Mal ausführe, fängt er wieder ganz unten an, obwohl von ca. 20000 Datensätzen nur noch 300 übrig geblieben sind. Vielleicht weißt Du bzw. ein anderer Forumteilnehmer ja eine Antwort, wie ich die letzte Zelle festlegen kann (als Hilfe hätte ich ja meine Variable last_row).

Bei Frage 2) habe ich jetzt eine Lösung mit der CASE-Abfrage gefunden, eine IF-Abfrage hätte meinen Rahmen gesprengt.

Gruß
Thorsten Becker


Anzeige
Re: Weiss jemand zu Punkt 2 mehr?
28.08.2002 10:19:00
Harald Kapp
Hallo Thorsten,
zu Deinem noch offenen Problem fällt mir leider nur ein, dass das Speichern in einer variablen wohl nichts helfen wird. Nach dem Ablauf des Makros bzw. beim erneuten Starten des Makros ist der alte Variableninhalt nicht mehr verfügbar. Ein ähnliches Problem hatte ich mal so gelöst, dass ich den Wert in einer unbenutzten Zelle auf dem Tabellenblatt gespeichert hae, da steht er auch beim wiederholten Makroaufruf zur Verfügung.

Gruß Harald

Re: Weiss jemand zu Punkt 2 mehr?
28.08.2002 11:19:11
beckersbest
Hallo Harald,

das hört sich doch schon gut an, so werde ich es versuchen. Danke nochmal und schönen Tag
Thorsten

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige