Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


Makro für aktuelle Daten
#1
Hallo Community,

ich hab zur Zeit die Aufgabe ein Eingabe zu vereinfachen.
Folgende Sache: Ich habe im Prinzip 2 Zeilen, in der ersten Zeile stehen die Monate drin und in der zweiten Zeile Werte einer Messung. Neue Werte werden meist am Monatsanfang "händisch" nach rechts fortlaufend je Monat eingegeben. Ich möchte jetzt, dass mittels Button "Aktualisieren" in Zelle X der Durchschnitt von den letzten 9 Monaten angegeben wird und per Klick auf den Button entsprechend einmal sich nach rechts verschiebt damit man sozusagen den neuen Wert in die Rechnung für den Durchschnitt mit einbezieht, diesen Bereich aus 9 Zellen soll auf einem Balken Chart dargestellt werden.
Dann soll nach Ablauf des entsprechenden Jahres die Werte mit den Monaten unter die Tabelle kopiert werden. Zum Abschluss soll das vergangene Jahr ausgeblendet werden damit man auf einem Blick die aktuellen Werte mit dem aktuellen Jahr sieht. Alles entsprechend fortlaufend.
Mein "Versuch" ^^

Sub Aktualisieren()
'
' Aktualisieren Makro

Dim Bereich, i, j
For i = 1 To 100
'Bereichsauswahl & +1 Spalte
Set Bereich = Range(Columns.Cells(3, 1 + i), Columns.Cells(3, 9 + i))
Bereich.Select
'Formel für Durchschnitt
Cells(17, 11) = Application.WorksheetFunction.Sum(Range(Columns.Cells(3, 1 + i), Columns.Cells(3, 9 + i))) / 9

'Ausblenden des letzten Monats
'ActiveSheet.Columns(1 + i, 3).Hidden = True

'am Ende des Jahres X kopieren
If i = 13 Then
Range("B2:M4").Select
Selection.Copy
Range("B28").Select
ActiveSheet.Paste
End If

If i = 26 Then
Range("N2:Y4").Select
Selection.Copy
Range("B32").Select
ActiveSheet.Paste
End If

If i = 39 Then
Range("Z2:AK4").Select
Selection.Copy
Range("B36").Select
ActiveSheet.Paste
End If
Next i
End Sub

Hoffe ich konnte es halbwegs erklären und nimmt mir meine "Noch-Unkenntnis" nicht übel =)
Danke!
to top
#2
Hallo Student,

was macht denn Dein Versuch und passt das oder nicht?
Unabhängig von eventuellen Optimierungsmöglichkeiten benötigst Du diese beiden Zeilen nicht:
Set Bereich = Range(Columns.Cells(3, 1 + i), Columns.Cells(3, 9 + i))
Bereich.Select
Den Bereich tust Du nur auswählen und verwendest ihn in Folge nicht mehr.

Wenn Du hier code einstellst, selbigen markierst und den Formatierungsbutton # verwendest, wird der code besser dargestellt. Hier mal ein Beispiel. Wenn Du in Deinem code die Zeilen zwischen For und Next und If und End If einrückst, bleibt das dann auch so.

Code:
If i = 39 Then
      Range("Z2:AK4").Select
      Selection.Copy
      Range("B36").Select
      ActiveSheet.Paste
   End If
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#3
Hallo Student,

Bei Deiner Erklärung zu den "händischen" Einträgen steht noch die Frage, wie die Monate auf Deiner Excel-Tabelle in Zeile 1 platziert sind. Wenn in A1 Januar steht, in B1 Februar, in C1 März usw., kannst Du schlecht neue Einträge für den Januar nach rechts fortlaufend eintragen.

Wenn die Werte in Zeile 2 stehen, ist es ungünstig, für die Durchschnittsberechnung die Zeile 3 zu nehmen.

Ich habe im Anhang mal als Ansatz eine Exceldatei mit einer Lösung ohne VBA.
(erstellt unter 2013)

Du baust Dir eine "Tabelle" in der Tabelle. Die sollte nach rechts mit der maximal möglichen Anzahl der Werte begrenzt sein. Ich habe hier mal 3 genommen.
In Spalte A stehen die Monate. Ich habe die Monatsnamen hier manuell eingetragen. Wenn Du das über ein Datum und die Zellformatierung regelst, kannst Du später auch nach Jahren filtern.

Unter der Tabelle habe ich die Ergebniszeile eingefügt. Als Ergebnis habe ich hier den Mittelwert genommen. Wenn Du nun Monate ausblendest, wird das automatisch neu berechnet.
Im Moment erweiterst Du die Monate z.B. mit dem Kontextmenü der Maus - rechte Maustaste, Zeilen einfügen. Wenn Du ausreichend leere Zeilen vorsiehst bzw. die Monate schon vorträgst, kannst Du das auch sparen.

Dann habe ich das Diagramm eingefügt und den Datenbereich festgelegt. Wenn Du die tabelle erweiterst, passen sich die Bezüge automatisch an. Wenn Du Zeilen oder Spalten ausblendest, passt sich das Diagramm ebenfalls an.


Angehängte Dateien
.xlsx   TabelleMittelwert.xlsx (Größe: 13,84 KB / Downloads: 8)
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Formel für: Kosten durch die aktuelle Anzahl der Tage des Monats * die Anzahl der ... User255 10 129 18.11.2016, 14:43
Letzter Beitrag: BoskoBiati
  Kosten durch die aktuelle Anzahl der Tage des Monats User255 6 223 01.09.2016, 22:18
Letzter Beitrag: User255
  VBA: Alle Tabellenblätter ausblenden und maximal nur das aktuelle anzeigen sdtbluethink 1 300 11.05.2016, 13:22
Letzter Beitrag: sdtbluethink
  Daten mittels Makro in ein anderes Tabellenblatt übernehmen Chris-89 2 507 06.04.2016, 14:03
Letzter Beitrag: Chris-89
  Makro - Daten in neue Blätter sortieren Rupert85 4 630 10.03.2016, 18:32
Letzter Beitrag: schauan
  Makro soll Daten selektieren und als Email versenden steff97 19 2.300 05.10.2015, 14:31
Letzter Beitrag: steff97
  Daten mit makro/vba automatisch kopieren Dome26 0 632 05.03.2015, 16:33
Letzter Beitrag: Dome26
Question aktuelle KW Sheet verschieben oliver 11 2.278 26.01.2015, 13:24
Letzter Beitrag: oliver

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste