eine If anwendung auf ganze spalte?

VBA Versuch - (Microsoft Excel, VBA, If)

1 Antwort

was etwas praktischer als ein Screenshot wäre, wäre der Code direkt als Text, dann könnte man den auch ändern - ich tippe das Bild nicht ab.

Man braucht natürlich nicht die Abfragen 120 Mal zu wiederholen, sondern setzt eine Variable ein, die man in einer Schleife durchgeht. In Deinem Fall jeweils die Zeilenangabe durch die Variable ersetzen:

for i=2 to 120
if sheets...(i,2) = "SK" and sheets...(i,3)="LG" then...
end if
next

das mit dem Sortieren habe ich nicht wirklich verstanden, was genau passieren soll.

RigaDone 
Fragesteller
 17.02.2017, 14:43
mhh okee stimmt eigentlich :) dass mit dem reinkopieren macht natürlich mehr sinn :)

wenn die Zellen kopiert sind steht in der Reihe "I" nun ein Name und in der Reihe "J" ein Zahlenwert. Es wäre nun praktisch wenn die Spalten  "I" und "J" nach dem Zahlenwert hin sortiert werden. Hier wäre es gut wenn der höchste wert mit dem dazu gehörigen Namen oben steht und abfallend weiter geht

Sub Zelle_kopieren()


If Sheets("Heim").Cells(2, 2) = "SK" And _
Sheets("Heim").Cells(2, 3) = "LG" Then

Sheets("Heim").Cells(2, 1).Copy _
Destination:=Sheets("Heim").Cells(2, 9)
End If

If Sheets("Heim").Cells(3, 2) = "SK" And _
Sheets("Heim").Cells(3, 3) = "LG" Then

Sheets("Heim").Cells(3, 1).Copy _
Destination:=Sheets("Heim").Cells(3, 9)

End If

End Sub
0
RigaDone 
Fragesteller
 17.02.2017, 14:49
@RigaDone

oh okee jetzt weis ich was du meintest mit dem sortieren. den zahlenwert habe ich mit sverweis gesetzt. kann man das evtl auch machen dass die zellen "B2" und "D2" kopiert werden? dann könnte ich mir das sverweis sparen

0
Ninombre  17.02.2017, 15:22
@RigaDone

Du kannst natürlich auch weitere Zellen kopieren, so wie bislang der (name?) aus Spalte A nach I kopiert wird, wenn die beiden Bedingungen erfüllt sind.
Ist es richtig, dass auch die Inhalte von B und D je Zeile kopiert werden sollen?

Da nicht jede Zeile kopiert wird, würde ich abfragen, welche die letzte benutzte Zeile in Spalte I ist, damit keine Lücken entstehen. Wenn das mit dem Kopieren passt, kann man noch das Sortieren einbauen

Sub Zelle_kopieren()
For i = 1 To 120
If Sheets("Heim").Cells(i, 2) = "SK" And Sheets("Heim").Cells(i, 3) = "LG" Then
letztezeile = Cells(Rows.Count, 9).End(xlUp).Row 'letzte Zeile in Spalte 9 = I wird ermittelt
Sheets("Heim").Cells(i, 1).Copy Destination:=Sheets("Heim").Cells(letztezeile + 1, 9) 'Spalte A nach Spalte I kopieren
Sheets("Heim").Cells(i, 2).Copy Destination:=Sheets("Heim").Cells(letztezeile + 1, 10) ' Spalte B nach Spalte J
Sheets("Heim").Cells(i, 4).Copy Destination:=Sheets("Heim").Cells(letztezeile + 1, 11) ' Spalte D nach Spalte K
End If
Next
End Sub
0