Frage : Bericht-Lösung Excel-VBA brauchte

Blatt 1 des angebrachten .xls ist ein typischer Monatsrückstellungsreport. Ich benötige VBA Code, Blatt 2 (Zusammenfassung) herzustellen und 3 (Zeitachse) pro die manuellen Beispiele zu bedecken. Ich zuspreche 500 Punkte für eine kodierte Lösung für Blatt 2 und eine anderen 500 für Blatt 3. .
Attachments:
Tätigkeitsbericht mit Zusammenfassung und Timeline

Antwort : Bericht-Lösung Excel-VBA brauchte

Mittlerweile sind hier beide Lösungen.



PS. Dank DropBearMod:-) kommen einige alte Namen langsam zurück zu Verstand
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
VorMakeSummary ()
Schwache WB als Arbeitsbuch
Schwacher ds als Arbeitsblatt, OS als Arbeitsblatt
Schwaches lRow so lang, i wie lang, J als lang, fRecord als lang
Einstellen WB = ThisWorkbook
Einstellen OS = WB. Arbeitsblätter („UnattendedActivity“)
Einstellen ds = WB. Worksheets.Add (nachher: =os)
ds. Name = „Zusammenfassung“
lRow = OS. Strecke („A65536“). Ende (xlUp). Reihe
OS. Zellen (7, 1).Copy ds. Zellen (1, 1)
ds. Zellen (1, 2).Value = OS. Zellen (7, 2).Value
ds. Zellen (1, 3).Value = OS. Zellen (7, 9).Value
ds. Zellen (1, 1).Copy
ds. Strecke („B1: C1“) .PasteSpecial xlPasteFormats
ds. Zellen (1, 1).ColumnWidth = 15.14
ds. Zellen (1, 2).ColumnWidth = 18.57
ds. Zellen (1, 3).ColumnWidth = 10
ds. Zellen (1, 4).ColumnWidth = 1.29
ds. Zellen (1, 5).ColumnWidth = 2.29
ds. Zellen (1, 6).ColumnWidth = 2.29
ds. Zellen (1, 7).ColumnWidth = 4.43
ds. Zellen (1, 8).ColumnWidth = 5.57
ds. Zellen (1, 9).ColumnWidth = 7
J = lRow - 6
fRecord = J
OS. Strecke („A8: “ U. lRow). Kopie
ds. Strecke („A2“) .PasteSpecial xlPasteValues
ds. Strecke („A2“) .PasteSpecial xlPasteFormats
OS. Strecke („B8: B“ u. lRow). Kopie
ds. Strecke („B2“) .PasteSpecial xlPasteValues
OS. Strecke („I8: I“ u. lRow). Ds kopieren. Strecke („C2“)
ds. Strecke („A2: C“ u. j). Art Key1: =Range („A2“), Order1: =xlDescending, Key2: =Range („B2“) _
        , Order2: =xlDescending, Überschrift: =xlNo, OrderCustom: =1, MatchCase: =False _
        , Lagebestimmung: =xlTopToBottom, DataOption1: =xlSortNormal, DataOption2: = _
        xlSortNormal


Für i = lRow zu 8 Schritt -1
    ds. Zellen (J, 4) = Stunde (ds. Zellen (J, 3))
    ds. Zellen (J, 5) = Minute (ds. Zellen (J, 3))
    ds. Zellen (J, 6) = an zweiter Stelle (ds. Zellen (J, 3))
    Wenn ds. Zellen (J, 1) <> ds. Zellen (J - 1, 1) oder ds. Zellen (J, 2) <> ds. Zellen (J - 1, 2) dann
        ds. Zellen (J, 9).Formula = „=SUM (F“ u. J u.“: F " u. fRecord u. ")/60“
        ds. Zellen (J, 8).Formula = „=SUM (E“ u. J u.“: E " u. fRecord u. ")+I“ u. J u.“ /60 "
        ds. Zellen (J, 7).Formula = „=SUM (D“ u. J u.“: D " u. fRecord u. ")+H“ u. J u.“ /60 "
        ds. Zellen (J, 3).Formula = „=G“ u. J u.“ /24 "
        ds. Zellen (J, 3).NumberFormat = „h: Millimeter“
        fRecord = J - 1
    Sonst
        ds. Strecke („A“ u. j).EntireRow.Hidden = richten aus
        ds. Zellen (J, 3) = ""
    Beenden wenn
    J = J - 1
Zunächst I
ds. Strecke („D4: I4“) .EntireColumn.Hidden = richten aus
Enden-Unterseeboot

VorNewTimeLine ()
Schwache WB als Arbeitsbuch
Schwacher ds als Arbeitsblatt, OS als Arbeitsblatt
Schwaches lRow so lang, i wie lang, J als lang, k als lang, tCounter als lang, rCounter als lang, nCol als lang
Schwaches cRange als Strecke
Einstellen WB = ThisWorkbook
Einstellen OS = WB. Arbeitsblätter („Zusammenfassung“)
Einstellen ds = WB. Worksheets.Add (nachher: =os)
ds. Name = „Zeitachse“
ds. Zellen (1, 1) = „ZEITACHSE“
ds. Zellen (1, 1).Font.Bold = richten aus
ds. Zellen (1, 1).ColumnWidth = 12.57
lRow = OS. Strecke („A65536“). Ende (xlUp). Reihe
tCounter = 2
J = 2
Für i = 2 zum lRow
    Wenn OS. Zellen (i + 1, 1) <> OS. Zellen (i, 1) dann
        ds. Zellen (J, 1) = OS. Zellen (i, 1)
        rCounter = tCounter
        Für k = rCounter zu i
            Wenn OS. Zellen (k, 2) <> OS. Zellen (k + 1, 2) oder OS. Zellen (k, 1) <> OS. Zellen (k + 1, 1) dann
                cRange = ds einstellen. Strecke („B1: IV1“). Entdeckung (OS. Zellen (k, 2))
                Wenn nicht cRange nichts dann ist
                    ds. Zellen (J, cRange.Column) = OS. Zellen (rCounter, 3)
                    ds. Zellen (J, cRange.Column) .NumberFormat = „h: Millimeter“
                Sonst
                    nCol = ds. Strecke („IV1“). Ende (xlToLeft). Spalte + 1
                    ds. Zellen (1, nCol) = OS. Zellen (k, 2)
                    ds. Zellen (1, nCol). Font.Bold = richten aus
                    ds. Zellen (1, nCol) .ColumnWidth = 11.29
                    ds. Zellen (J, nCol) = OS. Zellen (rCounter, 3)
                    ds. Zellen (J, nCol) .NumberFormat = „h: Millimeter“
                Beenden wenn
                rCounter = k + 1
            Beenden wenn
        Folgendes k
        J = J + 1
        tCounter = i + 1

    Beenden wenn
Zunächst I
ds. Zellen (J, 1) = „Gesamtsummen“
Für i = 2 zum nCol
    ds. Zellen (J, i). Formel = „=Sum (“ u. ds. Zellen (2, i). Adresse u. „: “ u. ds. Zellen (J - 1, i). Adresse u. ")“
Zunächst I
ds. Zellen (J, nCol + 1).Formula = „=Sum (“ u. ds. Zellen (J, 2).Address u. „: “ u. ds. Zellen (J, nCol). Adresse u. ")“
ds. Strecke (ds. Zellen (J, 1), ds. Zellen (J, nCol + 1)). Font.Bold = richten aus
ds. Strecke (ds. Zellen (J, 1), ds. Zellen (J, nCol + 1)) .NumberFormat = „[h]: Millimeter: SS; @“
ds.UsedRange.HorizontalAlignment = xlCenter
Enden-Unterseeboot
Weitere Lösungen  
 
programming4us programming4us