Liebe Excel User,
ich führe eine Excelliste in der täglich einige Zeilen hinzugefügt werden.
In dieser Liste habe ich eine Spalte B definiert, in der ich mittels der Funktion "Anzahl2" die Anzahl der nicht leeren Zellen zählen lasse. Diesen Wert lasse ich mir in Zelle A10 anzeigen.
Je mehr Zeilen hinzugefügt werden bei dem die Spalte B keinen Inhalt hat, erhöht sich der Wert in Zelle A10.
Soweit so gut.
Nun möchte ich mir gerne zu jedem Monatsersten diesen Wert in Zelle A10 automatisch wegschreiben lassen. Am besten in einem neuen Tabellenblatt.
Das Ergebnis sollte in etwa so aussehen:
1.1.2018 56
1.2.2018 72
1.3.2018 86
1.4.2018 112
Ich hoffe mich einigermaßen ausgedrückt zu haben und hoffe auf den ein oder anderen Lösungsansatz.
Hallo,
anbei eine Sample Datei. In der Zelle i1 werden die leeren Zellen gezählt.
Zu jedem Monatsersten möchte ich, dass diese Wert woanders gesichert wird.
Vielen Dank
In der Auflistung stehen keine Daten, da ich diese nicht benötige.
Der Wert in i1 wird ja von Zeit zu Zeit größer, je mehr Zeilen eingefügt werden wo in Spalte D leer bleibt.
Ich benötige eine Lösung, wo ich diesen "Wachstum" historisch nachverfolgen kann.
Ich könnte mir diesen zu jedem Monatsersten manuell eintragen, aber genau dies würde ich vermeiden.
Sprich, wenn ich die Datei am 1.4. öffne, soll Excel den aktuellen Wert von i1 lesen und wegschreiben.
am 1.5. dann wieder.
Hi,
ich fürchte, das ist nur mit VBA zu lösen (da kann ich dir aber nicht helfen). Oder du bleibst bei der Handarbeit - ist ja nur einmal im Monat.
Moin,
da du eine recht "klassische" Excel-Versio besitzt würde ich folgenden Weg gehen: Am ersten Arbeitstag des Monats die Datei öffnen und unter dem entsprechenden Namen speichern. Mit VBA wäre mir das viel zu viel Aufwand. Nimm doch beispielsweise einmal den nächsten Ersten, der ja ein Sonntag ist. Und ach ja, der 2.4. ist ja auch ein Feiertag ...
Hallo fvento,
folgender VBA-Code kommt in das schon vorhandene VBA-Modul 'DieseArbeitsmappe':
Private Sub Workbook_Open()
Dim datMonat As Date
Dim datMax As Date
datMonat = DateSerial(Year(Date), Month(Date), 1)
With Worksheets("Monatsliste") 'das ist das Listenarbeitsblatt
datMax = Application.Max(.Columns(1))
If datMonat > DateSerial(Year(datMax), Month(datMax), 1) Then
With .Cells(.Rows.Count, 1).End(xlUp)
.Offset(1, 0).Value = Date
.Offset(1, 1).Value = Worksheets("Tabelle1").Range("I1").Value
End With
End If
End With
End Sub
Die Datei musst Du dann aber als Excel-Arbeitsmappe mit Makros (*.xlsm) speichern.
Gruß Uwe
Hallo,
ich habe Dir eine ganz einfache Variante erstellt. Diese erzeugt im aktuellen Verzeichnis ein Sub-Verzeichnis "Backup" und speichert jeden 1. des Monats ein Testfile hinein in dem nur steht "11.03.2018 Sicherung = 6";
Der VBA-Code kommt in das schon vorhandene Modul "DieseArbeitsmappe":
Code:
Private Sub Workbook_Open()
Dim StrPath As String
Dim FN As String
Dim nFileNr As Long
Dim Data As String
Application.ScreenUpdating = False
On Error Resume Next
If Dir(ActiveWorkbook.Path & "\Backup", vbDirectory) = "" Then
MkDir ActiveWorkbook.Path & "\Backup"
End If
If Day(Date) = 11 Then
StrPath = ActiveWorkbook.Path & "\Backup\"
FN = Format(Date, "dd.mm.yyyy") & "_Sicherung.txt"
If Dir(StrPath & FN, vbNormal) = "" Then
nFileNr = FreeFile
Open StrPath & FN For Output As #nFileNr
Data = Format(Date, "dd.mm.yyyy") & " Sicherung = " & Tabelle1.Range("I1").Value
Print #nFileNr, Data
Close nFileNr
End If
End If
End Sub