PDA

Vollständige Version anzeigen : je nach namen in Spalte A die restlichen Zellen kopieren


Derivator
05.05.2009, 12:32
Hallo zusammen,

ich habe ein kleines Problem,
ich benötige ein Makro dass mir je nachdem, was in Tabellenblatt "Input" in Spalte A steht, einzelne Zellen aus der Zeile in ein Tabellenblatt "Output" in eine Zeile kopiert. Sollte in Spalte A "Strukturierte Wertpapiere" auftauchen, so sollen Zellen aus dieser Zeile in ein weiteres Tabellenblatt "Strukturierte" kopiert werden.

ich hänge mal eine Beispieldatei an.
Die Werte die kopiert werden sollen habe ich orange markiert...

Kann mir da jemand einen Tip geben wie ich VBA dazu bekomme in einer Schleife da durchzugehen und die zellenwerte zu kopieren und an anderer Stelle einzufügen?

Vielen Dank schon einmal!

Grüße

Sebi

DeBabba
05.05.2009, 13:08
Na dann
schau mal hier
das kann man bestimmt einfacher gestalten, aber es funzt :grins: :D

Gruß
DeBabba

Derivator
05.05.2009, 13:59
Hallo DeBabba,

erst einmal danke für Deine Hilfe,
das ist aber leider noch nicht ganz was ich suche. mit Hilfe Deines Makros wird ja immer die ganze Spalte kopiert.
ich möchte dass er für jede einzelne Zeile Prüft was er kopieren soll, beispielsweise sollen wenn (Aktien) Steht die spalten (jeweils aus "Input" in "Output") B in B E in D und G in G kopiert werden, bei (Renten) B in B C in C und D in D die restlichen Spalten sollen nicht kopiert werden.

Ich hatte irgendwas gedacht wie:

Sub Ber()
Dim A, B, C, D
Sheets("Input").Activate
A = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Rows.Count
For B = 2 To A
if Cells(B, 1).value = Aktie then

copy cells(B, 2)
sheets("output").activate
paste cells(B, 2)
sheets("input").activate
copy cells(B, 4)
sheets("output").activate
paste cells(B, 3)
sheets("input").activate
copy cells(B, 7)
sheets("output").activate
paste cells(B, 7)
sheets("input").activate

else if Cells(B, 1).value = Renten then

ähnlich wie gerade....

next B

Leider bin ich zu doof das mit den richtigen befehlen zu programmieren... und weiß nicht ob das überhaupt so geht, bzw. auch "schöner" geht...

Wäre hier für Hilfe wirklich dankbar!

DeBabba
05.05.2009, 14:28
Hi Derivator,
sorry muß jetzt weg.
kümmere mich heute abend nochmal darum
hab Geduld

Gruß
DeBabba

Derivator
05.05.2009, 15:06
Super, danke Dir!

jinx
05.05.2009, 16:09
Moin, Derivator,

vielleicht so (an einer Kopie ausprobieren):

Sub Ber()
Dim lngLast As Long, lngCounter As Long

Sheets("Input").Activate
lngLast = Cells(Rows.Count, "A").End(xlUp).Row

For lngCounter = 2 To lngLast
If Cells(lngCounter, 1).Value = "Aktie" Then
With Sheets("Output")
.Cells(lngCounter, 2).Value = Cells(lngCounter, 2)
.Cells(lngCounter, 3).Value = Cells(lngCounter, 4)
.Cells(lngCounter, 7).Value = Cells(lngCounter, 7)
End With
ElseIf Cells(lngCounter, 1).Value = "Renten" Then
With Sheets("Output")
.Cells(lngCounter, 12).Value = Cells(lngCounter, 2)
.Cells(lngCounter, 17).Value = Cells(lngCounter, 7)
End With
End If
Next lngCounter
End Sub
Die Cells-Anweisung erwartet die Zellenangabe in der Form Zeile, Spalte, wobei die Zeile zwingend eine Zahl sein muss, die Spaltenangabe kann aber entweder als Zahl (wie oben oder als String (also statt 2 ein "B" für die Angabe der zweiten Spalte) erfolgen.

Derivator
05.05.2009, 16:32
Super! Funktioniert!

Den Rest bekomme ich selbst hin, Danke euch vielmals!!!!