Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1264to1268
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

Tabelle mit Makro bearbeiten

Tabelle mit Makro bearbeiten
Niklas
Hallo liebes Forum,
Ich habe hier eine Tabelle, von denen es noch eine Menge mehr gibt und für die ich gerne ein Makro zur Bearbeitung erstellen würde.
https://www.herber.de/bbs/user/80527.xlsx
Undzwar sind folgende 3 Dinge zu tun.
1. Muss in der Spalte BK ab Zeile 8 die Summe aus allen 53 linken Zellen gebildet werden.
2. Soll in der Spalte BL ab Zeile 2 der entsprechende Name eines Vorgangs stehen. Hier wird es allerdings komplizert, da der Name in jeder Spalte von A bis H stehen könnte und immer in jeder zweiten ab Zeile 8.
3. Und zum Schluss soll noch eine bestimmte Formel für jede zweite Summe in Spalte BK ab Zeile 8 angewendet werden und das Ergebnis in Spalte BM ab Zeile 2 stehen.
Hier ist mein bisheriger Code, jedoch mit einer Menge Schwachstellen. Was noch fehlt, ist die Namenswiedergabe (2.) und zu beachten ist auch, dass die Tabellen alle unterschiedlich viele Zeilen haben ab Zeile 8. Ich bin bisher von nur 4 Vorgängen ausgegangen.
    Columns("BL:BL").Select
Selection.NumberFormat = "General"
Columns("BM:BM").Select
Selection.Style = "Percent"
Range("BL1").Select
ActiveCell.FormulaR1C1 = "Vorgang"
Range("BL2").Select
ActiveCell.FormulaR1C1 = "=R[6]C[-60]"
Range("BL3").Select
ActiveCell.FormulaR1C1 = "=R[7]C[-60]"
Range("BL4").Select
ActiveCell.FormulaR1C1 = "=R[8]C[-60]"
Range("BL5").Select
ActiveCell.FormulaR1C1 = "=R[9]C[-60]"
Range("BM1").Select
ActiveCell.FormulaR1C1 = "Fortschritt"
Range("BM2").Select
ActiveCell.FormulaR1C1 = _
"=IF(R[6]C[-2]=0,0,IF(R[6]C[-2]=R[7]C[-2],1,0.5))"
Range("BM3").Select
ActiveCell.FormulaR1C1 = _
"=IF(R[7]C[-2]=0,0,IF(R[7]C[-2]=R[8]C[-2],1,0.5))"
Range("BM4").Select
ActiveCell.FormulaR1C1 = _
"=IF(R[8]C[-2]=0,0,IF(R[8]C[-2]=R[9]C[-2],1,0.5))"
Range("BM5").Select
ActiveCell.FormulaR1C1 = _
"=IF(R[9]C[-2]=0,0,IF(R[9]C[-2]=R[10]C[-2],1,0.5))"
Range("BK1").Select
ActiveCell.FormulaR1C1 = "Summe"
Range("BJ1").Select
Selection.Copy
Range("BK1:BM1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("BK8").Select
ActiveCell.FormulaLocal = "=SUMME(J8:BJ8)"
Range("BK9").Select
ActiveCell.FormulaLocal = "=SUMME(J9:BJ9)"
Range("BK10").Select
ActiveCell.FormulaLocal = "=SUMME(J10:BJ10)"
Range("BK11").Select
ActiveCell.FormulaLocal = "=SUMME(J11:BJ11)"
Range("BK12").Select
ActiveCell.FormulaLocal = "=SUMME(J12:BJ12)"
Range("BK13").Select
ActiveCell.FormulaLocal = "=SUMME(J13:BJ13)"
Range("BK14").Select
ActiveCell.FormulaLocal = "=SUMME(J14:BJ14)"
Range("BK15").Select
ActiveCell.FormulaLocal = "=SUMME(J14:BJ14)"
Ich würde mich sehr freuen, wenn mir jemand helfen kann.
Vielen Dank schonmal. SG Niklas

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Tabelle mit Makro bearbeiten
12.06.2012 14:42:49
fcs
Hallo Niklas,
hier dein Makro mit ein paar Vereinfachungen und den Formeln mit Auswertung ab Zeile 8
Gruß
Franz
Sub Formeln()
Dim Zeile As Long, Zeile1 As Long, ZeileL As Long, Spalte As Long, ZeileF As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With ActiveSheet
'Spaltenüberschriften
.Range("BL1").Value = "Vorgang"
.Range("BM1").Value = "Fortschritt"
.Range("BK1").Value = "Summe"
'Format für Spaltentitel
.Range("BJ1").Copy
.Range("BK1:BM1").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
'Zahlenformate in Spalten
.Columns("BK:BK").NumberFormat = "#,##0.00" 'Zahlenformat erforderlich, da sonst evtl. _
Probleme mit Summenformel
.Columns("BL:BL").NumberFormat = "General"
.Columns("BM:BM").Style = "Percent"
Zeile1 = 8
'letzte Zeile in Spalte I (9)
ZeileL = .Cells(.Rows.Count, 9).End(xlUp).Row
'Summenformel in Spalte BK
With .Range(.Cells(Zeile1, 63), .Cells(ZeileL, 63))
.FormulaR1C1 = "=SUM(R[0]C[-53]:R[0]C[-1])"
End With
'Formel Vorgangsname in Spalte BL und Differenzformel in Spalte BK ab Zeile 2
ZeileF = 2 '1.Zeile mit Formel
For Zeile = Zeile1 To ZeileL Step 2
'Differenzformel - mit Round, um Rechengenauigkeit von Excel zu überlisten
.Cells(ZeileF, 65).FormulaR1C1 = "=IF(ROUND(R[" & Zeile - ZeileF _
& "]C[-2],3)=0,0,IF(ROUND(R[" & Zeile - ZeileF _
& "]C[-2],3)=ROUND(R[" & Zeile - ZeileF + 1 & "]C[-2],3),1,0.5))"
'Vorgangsname
For Spalte = 1 To 8
If .Cells(Zeile, Spalte).Value  "" Then
'            .Cells(ZeileF, 64).Value = .Cells(Zeile, Spalte).Value
.Cells(ZeileF, 64).FormulaR1C1 = "=R[" & Zeile - ZeileF & "]C" & Spalte
Exit For
End If
Next
ZeileF = ZeileF + 1
Next
End With
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Anzeige
erledigt
12.06.2012 16:38:46
Niklas
Cool vielen Dank Franz!

107 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige