Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1620to1624
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
Inhaltsverzeichnis

Löschvoränge beschleunigen

Löschvoränge beschleunigen
24.04.2018 09:13:20
Felix
Guten Morgen alle Zusammen,
ich habe ein Makro, was mir hilft bestimmte Zeilen eines Tabellenblatts in eine txt-Datei umzuwandeln.
Das funktioniert auch gut, allerdings lösche ich alle Zeilen raus, wo ein Jahr enthalten ist, welches älter ist als unser aktuelles (Jetzt quasi 2018) und alle Zeilen wo das aktuelle Jahr drin ist, aber ein abgelaufenes Quartal.
Auch das funktioniert alles gut. Nur seit dem Jahreswechsel habe ich folglich viele historische Zeilen und das Makro läuft mittlerweile unerträglich lange bis alle "alten" Zeilen gelöscht sind.
Kenn Jemand eine Möglichkeit die Löschvorgänge zu beschleunigen oder weiß eine bessere Alternative?
Vielen Dank im Voraus und hier mal das Makro:
Sub txt_file()
Application.ScreenUpdating = False
'generate a second Transfer for GPS sheet with name project number and .txt
DateiName = Range("A5").Value & ".txt"
Sheets("Transfer for GPS").Select
Sheets("Transfer for GPS").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "Import for TXT"
Sheets("Import for TXT").Select
lastRow = Sheets("Import for TXT").Cells(Rows.Count, 1).End(xlUp).Row
'Clearing of all historical year and quarter lines to ensure a successfully TXT import  _
into GlobalPS
For x = lastRow To 5 Step -1
If Cells(x, 12).Value  "" Then
If Cells(x, 12).Value 

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Löschvoränge beschleunigen
24.04.2018 09:23:11
Matthias
Moin!
Also Zeilen löschen kostet immer Zeit, insb. wenn man es einzeln macht. Schneller ist da, wenn man einen Block löscht. Um das zu erreichen hättetst du folgende Möglichkeiten:
1. MIt dem Filter arbeiten und die Zeilen des Filterergebnis (kleiner dein Jahr) löschen
oder
2. Die Daten sortierten (nach der Spalte mit dem Jahr / Datum) und dann ab der Stelle, wo sie unter dein Jahr rutschen löschen. Danach kann man ja bei Bedarf wieder die Originalreihenfolge herstellen (evtl. mit Hilfsspalte)
Bei beiden Varianten stehen deine Daten in einem Block da und du brauchst nur einen Löschvorgang.
VG
Anzeige
kleine Anmerkung
24.04.2018 10:08:40
Daniel
wenn die Tabelle sehr groß ist (ab 5-stelligen Zeilenanzahlen) sollte man auch dann sortieren, wenn man mit dem Filter arbeitet.
denn nur dann bilden die zu löschenden Zeilen auch wirklich einen lückenlosen Block und nur dieser wird von Excel sehr schnell gelöscht.
wenn ich ohne sortieren mit dem Filter arbeite, dann brauche ich zwar nur einen Löschbefehl, aber ein:
Range("1:1,3:3,5:5").delete ist für Excel 3x so aufwendig wie ein Range("1:3").Delete, weil im ersten fall 3 Blöcke gelöscht werden müssen, im zweiten Fall aber nur einer.
Gruß Daniel
AW: Löschvoränge beschleunigen
24.04.2018 10:17:21
MCO
Moin!
Alternativ kannst du einfach die Zeilen mit der Lösch-Bedingung in einen Bereich Bereich schreiben und dann mit nur 1 Rutsch die Zeilen des Bereiches löschen.
Sub zeilenweise_massen_löschen()
lz = ActiveSheet.UsedRange.Rows.Count
Set rng = Range("A" & lz + 1)
For i = 1 To lz Step 15
Set rng = Union(rng, Range("A" & i))
Next i
rng.Rows.EntireRow.Select
End Sub
Bedingung anpassen, select natürlich durch delete ersetzen
Gruß, MCO
Anzeige
AW: Löschvoränge beschleunigen
24.04.2018 10:21:43
MCO
Ach ja,
bitte auch noch an Anfang reinschreiben
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
und am ende (wichtig)
Application.Calculation = xlCalculationAutomatic
Gruß, MCO
AW: Löschvoränge beschleunigen
24.04.2018 10:34:22
Daniel
Hi MCO
das hilft hier nicht viel, sondern nur ein bisschen.
am meisten hilft: sortieren, damit die zu löschenden Zeilen einen lückenlosen Block bilden.
das Problem ist folgendes:
wenn du Zeilen löschst, muss Excel überprüfen, ob es irgendwo eine Formel, einen Namen, oder eine Bedingte Formatierung gibt, welche von dieser Löschung betroffen ist und abgeändert werden muss.
Bilden die zu löschenden Zeilen einen lückenlosen Block, kann diese Aufgabe für alle Zeilen dieses Blocks in einem Schritt durchgeführt werden.
Besteht der Zellbereich aus mehreren solcher Blöcke, weil eben Lücken vorhanden sind, muss diese Aktion für jeden Block separat ausgeführt werden.
Daher ist für die Verarbeitungsgeschwindigkeit beim Löschen von Zeilen nicht relvant, wieviele Zeilen der Zellbereich absolut hat, sondern aus wievielen lückenlosen Blöcken (im Fachjargon "Area") er besteht.
je besser sortiert der zellbereich ist, um so schneller geht das löschen.
Gruß Daniel
Anzeige
AW: Löschvoränge beschleunigen
24.04.2018 13:36:52
Felix
Hallo Danke für Euer schnelles Feedback!,
ich denke das Beste ist, die Löschvorgänge komplett zu vermeiden.
Hier mal eine abgespeckte Version meiner Excel Datei, mit dem Makro, was quasi das Vorprogramm ist, bevor die Textdatei generiert werden soll.
https://www.herber.de/bbs/user/121234.xlsm
Hier steht in der Zelle G17 das aktuelle Jahr.
Am Besten wäre es, wenn einfach nur die Quartalszahlen ab dem aktuellen Jahr gezogen werden.
In diesem konkreten Fall würde das Makro nicht bei Spalte 6 anfangen sondern bei Spalte 27.
Ich hatte schon versucht den Bereich mit den Mod-Operatoren mit einigen Variablen dynamisch anzupassen, bin aber leider gescheitert.
Könnt Ihr mir vielleicht weiterhelfen, dass dieses Makro immer das aktuelle Jahr abprüft und damit immer ab der richtigen Spalte beginnt? Dann könnte ich mir die Löschvorgänge sparen.
Wäre wirklich super!
VG Felix
PS: @ Matthias, kann es sein, dass dieses Makro sogar von dir stammt ;)
Anzeige
AW: Löschvoränge beschleunigen
24.04.2018 21:18:26
Matthias
Moin!
Also zu deinem Anfangscode kann ich grad nicht viel Schreiben. Das Blatt war in der Datei nicht drin, so dass man den Aufbau nicht sieht. Man kann es grob aus dem Code erahnen. Wollte aber nicht Arbeit für die Tonne machen, falls es doch falsch ist.
Kannst du aber auch einfach erstellen. Im Zweifel mit dem Makrorekorder erstmal aufzeichnen und dann nur noch abwandeln. Das Löschen der Spalte würde ich aber vor dem Sortieren machen. Dann ist der Bereich zum Sortieren nicht so groß.
Nun zum Code in der Datei.
Der Code in der Datei speichert aber die Werte nicht in das Blatt "Transfer for GPS" sondern nach "Import fpr GPS". Habe ihn mal dahingehend abgeändert, dass er (eigentlich - konnte es nicht testen), das Jahr und das Quartal berücksichtigen sollte. Alle Werte davor (sollten) nicht ausgelesen werden.
Und ja, der Code ist von mir. Da wir damals auf Kommentare verzichtet hatten, solltest du bei Fragen für die anderen zumindest mal kurz erläutern, was der Code macht. Ansonsten könnte das Einlesen recht schwierig werden.
Änderungen habe ich kommentiert.
Sub Import_For_GPS()
Dim zeile As Long
Dim letzte As Long
Dim anzjahre As Long
Dim anzeintrag As Long
Dim indziel As Long
Dim werte()
Dim auswertung()
Dim daten
Dim quelle As Object
Dim ziel As Object
Dim i As Long
Dim start As Long
Dim jahr As Long
Dim spaltevar As Long
Dim jahrg13 As Long
Dim aktquart As Long
Application.ScreenUpdating = False
Set quelle = Worksheets("DG_Template")
Set ziel = Worksheets("Import for GPS")
'Anzahl der Jahre die ausgewertet werden
anzjahre = 7
letzte = quelle.Cells(quelle.Rows.Count, 1).End(xlUp).Row
anzeintrag = Application.WorksheetFunction.CountIf(quelle.Range("G19:G" & letzte), ">0")
ReDim auswertung(1 To (anzeintrag * 4 * anzjahre), 1 To 13)
ReDim werte(3, anzjahre * 4)
daten = quelle.Range(quelle.Cells(1, 1), quelle.Cells(letzte, 8 + 21 * anzjahre))
'indexwerte berechnen
start = 6
jahr = quelle.Range("C1")
jahrg13 = CLng(quelle.Range("13")) 'neu
aktquart = CLng(Int((Month(Date) - 1) / 3) + 1) 'neu
For i = 1 To anzjahre * 4
werte(1, i) = start + IIf((i - 1) Mod 4 = 0, 6, 5) 'das sind die Spalten vom Quartalsende  _
bzw, beim 4ten Quartal JAhresende
start = werte(1, i)
werte(2, i) = IIf(i Mod 4 = 0, 4, i Mod 4)  'das Quartal
werte(3, i) = jahr + Int((i - 1) / 4) 'das Jahr
Next i
'jetzt auswerten
indziel = 1
spaltevar = 13
For zeile = 19 To letzte
'zeile muss ausgewertet werden
If InStr(1, daten(zeile, 1), "costs", vbTextCompare) > 0 Then spaltevar = 12
If daten(zeile, 7) > 0 And daten(zeile, 3)  "" And daten(zeile, 7)  "Total" Then
For i = 1 To UBound(werte, 2)
'prüfen ob im akt. Jahr ein Quartal größer gleich dem tagesaktuellen Quartal oder  _
Jahr größer als g13
If daten(zeile, werte(1, i)) > 0 And ((CLng(werte(3, 1)) = jahrg13 And CLng(werte(2, _
i)) >= aktquart) Or CLng(werte(3, 1)) > jahrg13) Then
auswertung(indziel, 1) = daten(5, 2)
auswertung(indziel, 2) = daten(3, 2)
auswertung(indziel, 3) = daten(7, 2)
auswertung(indziel, 6) = daten(zeile, 3)
auswertung(indziel, 8) = werte(3, i)
auswertung(indziel, 9) = werte(2, i)
auswertung(indziel, spaltevar) = daten(zeile, werte(1, i))
indziel = indziel + 1
End If
Next i
End If
Next zeile
'ergebnisse zurückschreiben
ziel.Range("A8:M" & anzeintrag * 4 * anzjahre) = auswertung
Set quelle = Nothing
Set ziel = Nothing
Application.ScreenUpdating = True
End Sub
Falls noch Kommentare (für spätere Anpassungen) notwendig sind, melden.
VG
PS: Hat der letzte Beitrag in Bezug auf die Änderungen mit den mod gepasst? Da kam keine Reaktion mehr.
Anzeige
AW: Löschvoränge beschleunigen
24.04.2018 21:20:29
Matthias
PS: Habe kurz nach dem Absendfen gesehen, dass ich bei der Range G13 das G vergessen hatte. Ist in der Zeile, wo jahrG13 einen Wert bekommt. Bitte noch ändern. Wie geschrieben, Code ist ungetestet.
VG
AW: Löschvoränge beschleunigen
25.04.2018 08:35:48
Felix
Hallo Matthias,
ich wusste doch, dass der Code von dir war :)
Ich habe ihn mittlerweile x mal erweitert und angepasst, aber er leistet immer noch gute Dienste!
Ich habe bewusst das damalige Makro wieder hochgeladen, denn wahrscheinlich würdest du den Kopf schütteln und das alles etwas effizienter programmieren ^^.
Sollten wir es aber in diesem hinbekommen, kann ich es einfach im jetzigen einbauen.
Übrigens Erstmal Danke, dass du wieder so tatkräftig unterstützt und auch an alle anderen!
Wie Matthias vorschlägt erzähle ich mal "kurz" was der Sinn hinter dem Ganzen ist.
Das Makro wird im Projektmanagement / Projektplanung benutzt. Es überträgt zeilenweise für jedes Cost Center (falls bei Total [hours] denn Werte drin sind) und jedes Quartal die geplanten Stunden auf ein extra Sheet. In dieser aufbereiteten Form kann ich ein Txt File erzeugen und dieses in SAP laden, damit ein ganzes Projekt angelegt ist. Das Makro unten ist die entscheidende Vorstufe, bevor das Txt File erzeugt wird.
In SAP können keine historischen Jahre raufgeladen werden. Da die Löschvorgänge aller Jahre die älter als unser aktuelles sind (also jetzt alles vor 2018) sehr lange dauern, wäre es sinnvoll wenn das Makro unten von Anfang an nur die Quartalszahlen des aktuellen Jahres zieht. Ich habe das aktuelle Jahr mal in die Zelle G17 geschrieben. Was mir fehlt ist eine Prüffunktion, die dieses Jahr mit den Projektjahren in der Zeile 16 abgleicht und daher gleich an der richtigen Stelle startet, somit spare ich mir das rauslöschen der vergangenen Jahre.
Ich hoffe das war halbwegs verständlich, ansonsten hier nochmal die Datei mit dem Makro, was Matthias gestern Abend noch angepasst hat, Danke dafür!
@ Matthias, aktuell kommt Typen unverträglich, an der Stelle wo Du jahrg13 die Zelle G13 zuweist.
Ich denke mal es hätte G17 lauten sollen, aber dann läuft das Makro auch leider nur leer durch.
Hier nochmal dein Makro von gestern und mit dieser Datei sollte man jetzt eigentlich arbeiten können:
https://www.herber.de/bbs/user/121258.xlsm
Sub Import_For_GPS()
Dim zeile As Long
Dim letzte As Long
Dim anzjahre As Long
Dim anzeintrag As Long
Dim indziel As Long
Dim werte()
Dim auswertung()
Dim daten
Dim quelle As Object
Dim ziel As Object
Dim i As Long
Dim start As Long
Dim jahr As Long
Dim spaltevar As Long
Dim jahrg13 As Long
Dim aktquart As Long
Application.ScreenUpdating = False
Set quelle = Worksheets("DG_Template")
Set ziel = Worksheets("Import for GPS")
'Anzahl der Jahre die ausgewertet werden
anzjahre = 7
letzte = quelle.Cells(quelle.Rows.Count, 1).End(xlUp).Row
anzeintrag = Application.WorksheetFunction.CountIf(quelle.Range("G19:G" & letzte), ">0")
ReDim auswertung(1 To (anzeintrag * 4 * anzjahre), 1 To 13)
ReDim werte(3, anzjahre * 4)
daten = quelle.Range(quelle.Cells(1, 1), quelle.Cells(letzte, 8 + 21 * anzjahre))
'indexwerte berechnen
start = 6
jahr = quelle.Range("C1")
jahrg13 = CLng(quelle.Range("G13")) 'neu
aktquart = CLng(Int((Month(Date) - 1) / 3) + 1) 'neu
For i = 1 To anzjahre * 4
werte(1, i) = start + IIf((i - 1) Mod 4 = 0, 6, 5) 'das sind die Spalten vom Quartalsende _
bzw, beim 4ten Quartal JAhresende
start = werte(1, i)
werte(2, i) = IIf(i Mod 4 = 0, 4, i Mod 4)  'das Quartal
werte(3, i) = jahr + Int((i - 1) / 4) 'das Jahr
Next i
'jetzt auswerten
indziel = 1
spaltevar = 13
For zeile = 19 To letzte
'zeile muss ausgewertet werden
If InStr(1, daten(zeile, 1), "costs", vbTextCompare) > 0 Then spaltevar = 12
If daten(zeile, 7) > 0 And daten(zeile, 3)  "" And daten(zeile, 7)  "Total" Then
For i = 1 To UBound(werte, 2)
'prüfen ob im akt. Jahr ein Quartal größer gleich dem tagesaktuellen Quartal oder _
Jahr größer als g13
If daten(zeile, werte(1, i)) > 0 And ((CLng(werte(3, 1)) = jahrg13 And CLng(werte(2, _
_
i)) >= aktquart) Or CLng(werte(3, 1)) > jahrg13) Then
auswertung(indziel, 1) = daten(5, 2)
auswertung(indziel, 2) = daten(3, 2)
auswertung(indziel, 3) = daten(7, 2)
auswertung(indziel, 6) = daten(zeile, 3)
auswertung(indziel, 8) = werte(3, i)
auswertung(indziel, 9) = werte(2, i)
auswertung(indziel, spaltevar) = daten(zeile, werte(1, i))
indziel = indziel + 1
End If
Next i
End If
Next zeile
'ergebnisse zurückschreiben
ziel.Range("A8:M" & anzeintrag * 4 * anzjahre) = auswertung
Set quelle = Nothing
Set ziel = Nothing
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Löschvoränge beschleunigen
25.04.2018 17:47:49
Matthias
Moin!
Upps, war irgendwie auf G13 gekommen. Mir ist die Nacht aber noch eine andere Lösung eingefallen. Damit entfallen die Vergleiche. Vermtl. lag da der Fehler. Jetzt wird direkt das aktuelle Quartal angesprungen und ab dort startet die Schleife. Wenn der Code vorher lief, sollte er jetzt auch laufen, da nur der STartwert in der for Schleife geändert wurde. G17 ist auch angepasst. Wie gesagt, ungetestet - meine Ex03 kann nix mit xlsm anfangen. Falls es nicht klappt, schau mal im Einzelschritt, was er bei aktquart, jahrg17 etc. ausliest.
VG
Sub Import_For_GPS()
Dim zeile As Long
Dim letzte As Long
Dim anzjahre As Long
Dim anzeintrag As Long
Dim indziel As Long
Dim werte()
Dim auswertung()
Dim daten
Dim quelle As Object
Dim ziel As Object
Dim i As Long
Dim start As Long
Dim jahr As Long
Dim spaltevar As Long
Dim jahrg13 As Long
Dim aktquart As Long
Dim startwert As Long
Application.ScreenUpdating = False
Set quelle = Worksheets("DG_Template")
Set ziel = Worksheets("Import for GPS")
'Anzahl der Jahre die ausgewertet werden
anzjahre = 7
letzte = quelle.Cells(quelle.Rows.Count, 1).End(xlUp).Row
anzeintrag = Application.WorksheetFunction.CountIf(quelle.Range("G19:G" & letzte), ">0")
ReDim auswertung(1 To (anzeintrag * 4 * anzjahre), 1 To 13)
ReDim werte(3, anzjahre * 4)
daten = quelle.Range(quelle.Cells(1, 1), quelle.Cells(letzte, 8 + 21 * anzjahre))
'indexwerte berechnen
start = 6
jahr = quelle.Range("C1")
jahrg17 = CLng(quelle.Range("G17")) 'neu
aktquart = CLng(Int((Month(Date) - 1) / 3) + 1) 'neu
startwert = (jahrg17 - CLng(jahr)) * 4 + aktquart
For i = 1 To anzjahre * 4
werte(1, i) = start + IIf((i - 1) Mod 4 = 0, 6, 5) 'das sind die Spalten vom Quartalsende _
bzw, beim 4ten Quartal JAhresende
start = werte(1, i)
werte(2, i) = IIf(i Mod 4 = 0, 4, i Mod 4)  'das Quartal
werte(3, i) = jahr + Int((i - 1) / 4) 'das Jahr
Next i
'jetzt auswerten
indziel = 1
spaltevar = 13
For zeile = 19 To letzte
'zeile muss ausgewertet werden
If InStr(1, daten(zeile, 1), "costs", vbTextCompare) > 0 Then spaltevar = 12
If daten(zeile, 7) > 0 And daten(zeile, 3)  "" And daten(zeile, 7)  "Total" Then
For i = startwert To UBound(werte, 2)
'prüfen ob im akt. Jahr ein Quartal größer gleich dem tagesaktuellen Quartal oder  _
Jahr größer als g13
If daten(zeile, werte(1, i)) > 0 Then
auswertung(indziel, 1) = daten(5, 2)
auswertung(indziel, 2) = daten(3, 2)
auswertung(indziel, 3) = daten(7, 2)
auswertung(indziel, 6) = daten(zeile, 3)
auswertung(indziel, 8) = werte(3, i)
auswertung(indziel, 9) = werte(2, i)
auswertung(indziel, spaltevar) = daten(zeile, werte(1, i))
indziel = indziel + 1
End If
Next i
End If
Next zeile
'ergebnisse zurückschreiben
ziel.Range("A8:M" & anzeintrag * 4 * anzjahre) = auswertung
Set quelle = Nothing
Set ziel = Nothing
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Löschvoränge beschleunigen
26.04.2018 08:36:30
Felix
Servus Matthias,
das klappt super, vielen Dank!
Ich bau das mal in mein aktuelles Makro und lad es rauf, dann kannst du mal sehen wie groß dein ursprüngliches Makro geworden ist ^^
VG Felix
AW: Löschvoränge beschleunigen
26.04.2018 10:22:50
Felix
Hallo Matthias,
hier mal das Makro wie es heute aussieht.
Vielen lieben Dank Dir nochmal, es leistet sehr gute Dienste und bringt einen großen Mehrwert.
Sub Import_For_GPS()
Dim zeile As Long
Dim letzte As Long
Dim anzjahre As Long
Dim anzeintrag As Long
Dim indziel As Long
Dim intSpalte As Integer
Dim werte()
Dim auswertung()
Dim daten
Dim quelle As Object
Dim ziel As Object
Dim i As Long
Dim start As Long
Dim jahr As Long
Dim spaltevar As Long
Dim j As Long
Dim DateiName As String
Dim x As Integer
Dim y As Integer
Dim jahrg17 As Long
Dim aktquart As Long
Dim startwert As Long
Application.ScreenUpdating = False
Set quelle = ActiveSheet
Set ziel = Worksheets("Transfer for GPS")
'number of project timeline and just consideration of rows where the total value is >0
anzjahre = 10
letzte = quelle.Cells(quelle.Rows.Count, 1).End(xlUp).Row
anzeintrag = Application.WorksheetFunction.CountIf(quelle.Range("H19:H" & letzte), ">0")
'calculation of index
ReDim auswertung(1 To (anzeintrag * 4 * anzjahre), 1 To 20)
ReDim werte(3, anzjahre * 4)
daten = quelle.Range(quelle.Cells(1, 1), quelle.Cells(letzte, 9 + 33 * anzjahre))
start = 7
jahr = quelle.Range("C1")
jahrg17 = CLng(quelle.Range("G17")) 'neu
aktquart = CLng(Int((Month(Date) - 1) / 3) + 1) 'neu
startwert = (jahrg17 - CLng(jahr)) * 4 + aktquart
For i = 1 To anzjahre * 4
werte(1, i) = start + IIf((i - 1) Mod 4 = 0, 9, 8)
start = werte(1, i)
werte(2, i) = IIf(i Mod 4 = 0, 4, i Mod 4)
werte(3, i) = jahr + Int((i - 1) / 4)
Next i
'transfer of relevant values to sheet Transfer for GPS
indziel = 1
spaltevar = 17
For zeile = 19 To letzte
'hours will be transfered in the 17th column (Q) and costs in the 16th column (P)
If InStr(1, daten(zeile, 1), "costs", vbTextCompare) > 0 Then spaltevar = 16
'just transfer quarterly values (hours or costs) if they have a cost item number, each  _
quarterly value get an own row in the Transfer for GPS sheet
'then copy in each row all other project specific information like project number, project  _
name ...
If daten(zeile, 8) > 0 And daten(zeile, 4)  "" And daten(zeile, 8)  "Total [hours]" And  _
daten(zeile, 8)  "Total [costs]" Then
For i = startwert To UBound(werte, 2)
If daten(zeile, werte(1, i)) > 0 Then
auswertung(indziel, 1) = daten(5, 2)
auswertung(indziel, 2) = daten(3, 2)
auswertung(indziel, 3) = daten(7, 2)
auswertung(indziel, 20) = daten(zeile, 3)
auswertung(indziel, 5) = daten(zeile, 4)
auswertung(indziel, 12) = werte(3, i)
auswertung(indziel, 13) = werte(2, i)
auswertung(indziel, 14) = "EUR"
auswertung(indziel, spaltevar) = daten(zeile, werte(1, i))
indziel = indziel + 1
End If
Next i
End If
Next zeile
'Clearing of existing values
ziel.Range("A5:T" & anzeintrag * 4 * anzjahre) = auswertung
Set quelle = Nothing
'Transfer C.ITEM number
ziel.Range("w5").AutoFill Destination:=ziel.Range("w5:w300")
ziel.Range("w5:w300").Copy
ziel.Range("f5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Transfer SID
ziel.Range("x5").AutoFill Destination:=ziel.Range("x5:x300")
ziel.Range("x5:x300").Copy
ziel.Range("g5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Transfer COA
ziel.Range("y5").AutoFill Destination:=ziel.Range("y5:y300")
ziel.Range("y5:y300").Copy
ziel.Range("h5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Transfer CC
ziel.Range("z5").AutoFill Destination:=ziel.Range("z5:z300")
ziel.Range("z5:z300").Copy
ziel.Range("i5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Transfer CC Resp.
ziel.Range("ab5").AutoFill Destination:=ziel.Range("ab5:ab300")
ziel.Range("ab5:ab300").Copy
ziel.Range("k5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Transfer Cost item declaration
ziel.Range("aa5").AutoFill Destination:=ziel.Range("aa5:aa300")
ziel.Range("aa5:aa300").Copy
ziel.Range("j5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Transfer CC-Loc
ziel.Range("u5").AutoFill Destination:=ziel.Range("u5:u300")
ziel.Range("u5:u300").Copy
ziel.Range("d5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Transfer Headcount
ziel.Range("ac5").AutoFill Destination:=ziel.Range("ac5:ac300")
ziel.Range("ac5:ac300").Copy
ziel.Range("r5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Transfer CD Group
ziel.Range("ad5").AutoFill Destination:=ziel.Range("ad5:ad300")
ziel.Range("ad5:ad300").Copy
ziel.Range("s5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'set number format
ziel.Columns("P:Q").NumberFormat = "#,##0.00"
Set ziel = Nothing
'delete all rows where are no values but a formula
intSpalte = 1
i = IIf(Len(Cells(Rows.Count, intSpalte)), Rows.Count, Cells(Rows.Count, intSpalte).End( _
xlUp).Row) + 1
j = Cells.SpecialCells(xlCellTypeLastCell).Row
If i 

Viele Grüße aus Regensburg
Felix
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige