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

If-Abfrage verkürzen

If-Abfrage verkürzen
05.08.2003 07:15:14
Erich M.
Hallo zusammen,

ich hatte bereits eine Anfrage gestellt, leider ohne Erfolg. Deshalb versuche ich es noch einmal. Bei nachfolgendem Code suche ich eine Lösung wie ich die einzelnen Zeilen (jede Zeile steht für die Kopie einer bestimmten spalte) verkürzen kann:

LetzteZeile = WS2.Range("A65536").End(xlUp).Row

For iZeile = 2 To WS1.Range("A65536").End(xlUp).Row
If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, 1).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row + 1, 1)
If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, 2).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row, 2)
If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, 3).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row, 3)
If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, 4).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row, 4)
If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, 5).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row, 5)
If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, 6).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row, 6)
If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, 7).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row, 7)
If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, 8).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row, 8)
If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, 9).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row, 9)
If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, 10).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row, 10)
If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, 11).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row, 11)
If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, 12).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row, 12)
If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, 13).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row, 13)
If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, 14).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row, 14)
If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, 15).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row, 15)

Next iZeile


meine letzte Anfrage war hier:

https://www.herber.de/forum/archiv/288to292/t288991.htm

Besten Dank für eine Hilfe!

mfg
Erich

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

Betreff
Datum
Anwender
Anzeige
AW: If-Abfrage verkürzen
05.08.2003 08:50:56
Andreas Walter
Der 1. Befehl ist zu allen anderen Befehle in Struktur anders
1. Befehl Row + 1, 1)
2. Befehl Row, 2)
3. Befehl Row, 3)
usw.


For iZeile = 2 To WS1.Range("A65536").End(xlUp).Row

If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, j).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row + 1, 1)

For j=2 to 15

If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, 2).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row, j)

Next j

Next iZeile


Anzeige
AW: If-Abfrage verkürzen
05.08.2003 16:37:21
Erich M.
Hallo Andreas,

besten Dank. Leider funktioniert die Zeile


If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, j).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row + 1, 1)

nicht. Hier bringt er:
Laufzeitfehler 1004
Anwendungs- oder objektdefinierter Fehler
Ich habe eingegeben: Dim j%
Alternativ schon probiert: Dim j As Long / Integer

Immer ohne Erfolg.

Was mache ich falsch?

mfg
Erich


AW: If-Abfrage verkürzen
05.08.2003 17:05:00
Andreas Walter
Mein Fehler


For iZeile = 2 To WS1.Range("A65536").End(xlUp).Row

If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, 1).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row + 1, 1)

For j=2 to 15

If WorksheetFunction.CountIf(WS2.Range(mySpalte2 & "2:" & mySpalte2 & LetzteZeile), WS1.Cells(iZeile, mySpalte1)) _
> 0 Then WS1.Cells(iZeile, j).Copy WS3.Cells(WS3.Range("a65536").End(xlUp).Row, j)

Next j

Next iZeile

Habe j im ersten befehl benutzt, statt im zweiten befehl
Jetzt muss es gehen.
Zum Verständnis man schleift von 2 bis 15 durch, wobei j die jeweilige Zahl zwischen 2 und 15 annimmt.

Hätten wir das selber finden können?


Anzeige
AW: If-Abfrage verkürzen
05.08.2003 17:18:41
Erich M.
Hallo Andreas,

diese Änderung hatte ich bereits eingebaut (sorry, hatte ich vergessen zu erwähnen). Allerdings hatte ich immer Fehlermeldungen.

Jetzt läuft das Makro aber durch mit:
Dim j%

Also allerbesten Dank!!

mfg
Erich


Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige