Hallo wishless !
Versuch doch das mal hier :
Sub WertAusTabelleInZiel()
'Variablen deklarieren
'Bei großen Datenmengen kannst du erheblich an Speicherplatz sparen, wobei
'>Dim DateiName$< das Gleiche ist wie : >Dim DateiName as String<
'>Dim ZeileQuelle&< das Gleiche ist wie : >Dim ZeileQuelle as Long<, usw . . .
'Siehe auch : Excel Hilfe > Datentypen (Zusammenfassung)
'Außerdem vertippst du dich nicht, wenn du Groß- und Kleinbuchstaben verwendest
'(Im Code immer kleinschreiben, wenn nach 'verlassen' der Zeile nicht 'VerLassen' da steht,
'hast du dich mit der Variablen vertippt - funktionier richtig aber nur nach der Deklaration).
Dim DateiName$, TabellenBlattQuelle$, TabellenBlattZiel$, SpalteBuchstabeZiel$, ZielZelle$
Dim ZeileStartQuelle&
Dim ZeileQuelle&, SpalteQuelle&, ZeileZiel&, SpalteZiel&
Dim AlleZeilenQuelle&, AlleSpaltenQuelle&, DatenSatzSprung&, ZeileVorschub&
Dim J&, K& 'Variablen für die Schleifen
Dim QuellDaten(28) 'Hier aufpassen, wenn AlleSpaltenQuelle sich ändert
'bei kleiner egal, bei größer bitte anpassen
'!!!!!!!!!!! Diese Daten unbedingt noch anpassen !!!!!!!!!!!!!
'Variablen vordefinieren
DateiName$ = "wishless.xlsm" 'Hier den Dateinamen einsetzen, den du verwendest
TabellenBlattQuelle$ = "Tabelle1" 'Hier ändern, wenn dein Tabellenblatt anders heißt
TabellenBlattZiel$ = "Tabelle2" 'Hier ändern, wenn dein Tabellenblatt anders heißt
ZeileStartQuelle& = 2 'Nur zu Demozwecken, dein Wert wahrscheinlich >1<
AlleZeilenQuelle& = 10 'Anzahl der zu bearbeitenden Zeilen, dein Wert ???
'Hier kannst du auch 100.000 oder so eingeben
'Hier nur Änderungen vornehmen, wenn sich deine Datenbereiche in Quelle und/oder Ziel ändern
ZeileZiel& = 2
SpalteZiel& = 4
AlleSpaltenQuelle& = 28 '=Anzahl Spalten A - AB
DatenSatzSprung& = 21 'Zeilen im Ziel von 1. - letzter Zeile des Datensatzes
'!!!!!!!!!!!!!!!!!!!!!Achtung!!!!!!!!!!!!!!!!!!!!!!!!
'Funktionoert nicht, wenn du in den Codes auf zu berechnende Werte zugreifen willst
'Dann jedesmal ausschalten (und hinterher wieder einschalten) oder ggf. ganz weglassen !
Application.Calculation = xlCalculationManual 'Berechnung aus - nur damit es schneller geht
'Daten lesen und schreiben
'in der Folge eingetragene Zahlen können auch als Variable deklariert werden, wenn nötig
For J& = ZeileStartQuelle& To AlleZeilenQuelle&
For K& = 1 To AlleSpaltenQuelle& - 1
ZeileQuelle& = J&
SpalteQuelle& = K&
ZeileZiel& = ((J& * DatenSatzSprung&) - DatenSatzSprung& + 1) + K& + ZeileVorschub&
If SpalteQuelle& = 5 Then
ZeileVorschub& = ZeileVorschub& - 4
ZeileZiel& = ZeileZiel& - 4
SpalteZiel& = SpalteZiel& + 3
ElseIf SpalteQuelle = 7 Then
ZeileVorschub& = ZeileVorschub& + 1
ZeileZiel& = ZeileZiel& + 1
ElseIf SpalteQuelle = 9 Then
ZeileVorschub& = ZeileVorschub& + 3
ZeileZiel& = ZeileZiel& + 3
SpalteZiel& = SpalteZiel& - 4
ElseIf SpalteQuelle = 19 Then
ZeileVorschub& = ZeileVorschub& - 10
ZeileZiel& = ZeileZiel& - 10
SpalteZiel& = SpalteZiel& + 2
End If
SpalteBuchstabeZiel$ = Split(Columns(SpalteZiel&).Address(0, 0), ":")(0)
ZielZelle$ = SpalteBuchstabeZiel$ & ZeileZiel&
Range(ZielZelle) = Workbooks(DateiName$).Worksheets(TabellenBlattQuelle$).Cells(ZeileQuelle&, SpalteQuelle&)
Next K&
ZeileVorschub& = 0
SpalteZiel& = 4
Next J&
Application.Calculation = xlCalculationAutomatic 'Ende schneller gehen
End Sub
Bitte nicht vergessen auf deine Bedürfnisse anzupassen = siehe Anmerkungen !!!!
Viel Spaß damit, ich hoffe ich konnte helfen.
Gruß
Eisbär
|