Minium, Maximum und Mittelwert mit VBA

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm ListBox
Bild

Betrifft: Minium, Maximum und Mittelwert mit VBA
von: Manuel
Geschrieben am: 26.10.2015 16:02:52

Hallo liebes Forum,
ich hab ein kleiens Problem, bei dem ich leider komplett überfordert bin und hoffe das ihr mir weiterhelfen könntet.
Ich habe in einem Excel Sheet(Upload) eine lange Liste an unterschiedlichen Teilen, die nach dem Upload nicht sortiert sind, jetzt würde ich gerne von allen gleichen Teilen (eindeutige Bezeichnung in Spalte C) das Minimum, Maximum und den Mittelwert (notwendigen Zahlen in Spalte O) auf ein anderes Sheet (Informationen) eingetragen bekommen mit dem entsprechenden Teil in Spalte A, Minimum in Spalte B usw..
Könnt ihr mir vielleicht helfen, ich weiß leider überhaupt keinen Rat.
Liebe Grüße und besten Dank
Manuel

Bild

Betrifft: AW: man könnte auch eine PIVOTauswertung ...
von: ... neopa C
Geschrieben am: 26.10.2015 16:16:06
Hallo Manuel,
... vornehmen. Mit nur wenigen Mausklicks ist diese schnell zusammengestellt.
Gruß Werner
.. , - ...

Bild

Betrifft: AW: man könnte auch eine PIVOTauswertung ...
von: Manuel
Geschrieben am: 26.10.2015 16:30:37
Hallo Werner,
darüber habe ich auch schon nachgedacht. Jedoch ist dies in meinem Projekt anders gewollt.
Hast du noch eine Idee für die Makros?
Grüße

Bild

Betrifft: AW: nur VBA-Lösung gesucht ...
von: ... neopa C
Geschrieben am: 26.10.2015 16:57:36
Hallo Manuel,
... aus VBA-Lösungen halte ich mich heraus.
Gruß Werner
.. , - ...

Bild

Betrifft: AW: man könnte auch eine PIVOTauswertung ...
von: Esmo
Geschrieben am: 26.10.2015 17:56:44
Hallo Manuel,
Mit dem erweiterten Filter die Teile auf das andere Blatt übertragen, dabei läßt Du Excel die Arbeit machen, die doppelten Teile rauszusortieren.
Und dann kannst Du doch per Formel die Maxima und Minima, Mittelwert einbauen?

Sub manuel_keineIdee()
'
' manuel_keineIdee Macro
'
  Dim zell As Range
  Dim Datenblatt  As Worksheet
  Dim Teile As String
  Dim Werte As String
  
   
   Set Datenblatt = ActiveSheet
   Set zell = Range("A1").CurrentRegion
   ' Adressen basteln
   Teile = "'" & Datenblatt.Name & "'!" & Range(zell.Columns(1).Rows(2), zell.Columns(1).Rows( _
zell.Rows.Count)).Address(ReferenceStyle:=xlR1C1)
   Werte = "'" & Datenblatt.Name & "'!" & Range(zell.Columns(2).Rows(2), zell.Columns(2).Rows( _
zell.Rows.Count)).Address(ReferenceStyle:=xlR1C1)
   Worksheets.Add
   'Daten "unique" kopieren
   zell.Columns(1).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("A1" _
        ), Unique:=True
    Range("B1").FormulaR1C1 = "Mittelw"
    Range("C1").FormulaR1C1 = "min"
    Range("D1").FormulaR1C1 = "max"
    Range("B2").FormulaR1C1 = _
        "=SUMIF(" & Teile & ",RC[-1]," & Werte & ")/ " & _
           "COUNTIF(" & Teile & ",RC[-1])"
     Range("C2").FormulaArray = "=MIN(IF(" & Teile & _
                               "=RC[-2]," & Werte & ",MAX(" & Werte & ")))"
    Range("D2").FormulaArray = "=MAX((" & Teile & "=RC[-3])*" & Werte & ")"
End Sub
vielleicht hat jemand für das MIN noch eine bessere Lösung - und beim MAX gehe ich auch davon aus, daß die Werte alle positiv sind...
Gruß
Ralph

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Daniel
Geschrieben am: 26.10.2015 17:43:48
Hi
hier mal ein sehr einfaches Makro für deine Auswertung.
Voraussetzung dass es funktioniert:
- in der Tabelle Upload ist die Zeile 1 die Überschriftenzeile und die Daten stehen ab Zeile 2
- in der Tabelle Information sind die Spalten A-F leer und können vollständig genutzt werden.
das Lösungsschema ist ganz einfach, du kannst die Schritte auch gut im Einzelstep-Modus nachvollziehen und dir im Blatt anschauen, was passiert.
Es sollten auch grössere Datenmengen damit problemlos verarbeitbar sein.


Sub test()
With Sheets("Informationen")
    Sheets("Upload").Range("C:C,O:O").Copy
    .Cells(1, 1).PasteSpecial xlPasteValues
    .Range("A:B").Sort Key1:=.Cells(1, 1), order1:=xlAscending, _
                        key2:=.Cells(1, 2), order2:=xlAscending, _
                        Header:=xlYes
    With .UsedRange.Columns(2)
        With .Resize(.Rows.Count - 1, 4).Offset(1, 1)
            .Columns(1).FormulaR1C1 = "=IF(RC1<>R[1]C1,RC2,R[1]C)"  'Max
            .Columns(3).FormulaR1C1 = "=IF(RC1<>R[1]C1,RC2,Sum(RC2,R[1]C))"  'Summe
            .Columns(4).FormulaR1C1 = "=IF(RC1<>R[1]C1,1,R[1]C+1)"          'Anzahl
            .Columns(2).FormulaR1C1 = "=IF(RC1<>R[-1]C1,RC[1]/RC[2],"""")"  'Mittelwert
            .Formula = .Value
        End With
   End With
   .Range("A:F").RemoveDuplicates 1, xlYes
   .Range("E:F").EntireColumn.Delete
   .Range("B1:D1").Value = Array("Min", "Max", "Mittelwert")
End With
End Sub
entscheidend ist, dass das RemoveDuplicates immer das erste Vorkommen eines Wertes stehen lässt und die folgenden löscht, darauf basieren die Formeln und die Sortierung.
Gruß Daniel

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Manuel
Geschrieben am: 26.10.2015 18:47:21
Hallo ihr alle,
vielen Dank für die Lösungen, ich konnte Daniel seine am besten implementieren. Es funktioniert einwandfrei, besten Dank für eure Hilfe.
Eine andere Frage an der ich gerade stehe. Vor der Auswertung mit Min,Max und Mittelwert sollen die Tabellen aus einer anderen Excel Datei importiert werden. Dafür habe ich mich schon an einem Makro im Forum bedient. Jedoch schaffe ich es nicht, dass man in der Userform aus der Listbox die entsprechenden Tabellen die hochgeladen werden sollen auch alle nacheinander in eine Tabelle kopiert werden.
Könntet ihr mir hierbei nochmal behilflich sein?
Hier meine Mappe: https://www.herber.de/bbs/user/101044.xlsm
Vielen Dank euch allen!

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Manuel
Geschrieben am: 26.10.2015 19:15:14
Hallo Daniel,
nochmal eine kurze Erweiterung die mir leider gerade erst aufgefallen ist...:(
Bei deinem Code klappt ja bisher alles super. Ich habe in der Tabelle (Upload) in Spalt E noch ein Datum stehen, leider strecken sich meine Zahlen über mehrere Jahre.
Kannst du deinen Code so anpassen, dass die Jahre mit berücksichtigt werden? Sprich auf der Tabelle (Informationen) dann in der Zelle B2 mit dem ersten Jahr anzufangen und B3, B4... die folgenden Jahre aufzunehmen. So das für jedes Jahr die Min, Max und Mittelwerte ermittelt wird sowie am Schluss für das jeweilige Teil einmal im gesamten (also das wie es jetzt ist).
Wäre das umsetzbar =)?
Vielen Dank schon mal im voraus und beste Grüße,
Manuel

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Daniel
Geschrieben am: 26.10.2015 19:31:27
Hi
ist schon umsetztbar.
aber warum machst du das nicht selber, ist ja nicht so schwer.
- Datumspalte mit kopieren
- Datumsspalte mit sortieren
- Formeln so anpassen, dass nicht nur der Wert, sondern auch das Datum mit verglichen wird, dh nicht
If(RC1<>R[1]C1,... sonden if(OR(RC1<>R[1]C1,RC2<>R[1]C2),...
der Wert in der Formel wird dann eben nicht aus RC2 sondern RC3 gelesen
in der WITH .Userrange.columns(2) musst du auch aus der 2 eine 3 machen,
beim Removeduplicates auch Datum und Wert berücksichtigen , dh der erste Parameter lautet dann nicht 1, sondern Array(1, 2)
naja und was du im folgenden dann noch ändern musst beim Löschen, ist ja quasi selbsterklärend.
Gruß Daniel

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Manuel
Geschrieben am: 26.10.2015 19:45:32
Okay ich werde es versuchen. Hast du vielleicht auch noch eine Lösung zu meiner Userform?

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Manuel
Geschrieben am: 26.10.2015 20:19:54
Hallo Daniel,
das kopieren und sortieren der Daten habe ich hinbekommen. Jedoch schaffe ich es nicht die Formel anzupassen.
Hier ist mein angepasster Code:

Sub test()
With Sheets("Informationen")
    Sheets("Upload").Range("C:C,E:E, O:O").Copy
    .Cells(1, 1).PasteSpecial xlPasteValues
    .Range("A:B").Sort Key1:=.Cells(1, 1), Order1:=xlAscending, _
                        key2:=.Cells(1, 2), order2:=xlAscending, _
                        key3:=.Cells(1, 3), order3:=xlAscending, _
                        Header:=xlYes
    With .UsedRange.Columns(3)
        With .Resize(.Rows.Count - 1, 4).Offset(1, 1)
            .Columns(1).FormulaR1C1 = "=IF(RC1<>R[1]C1,RC2,R[1]C)"  'Max
            .Columns(3).FormulaR1C1 = "=IF(RC1<>R[1]C1,RC2,Sum(RC2,R[1]C))"  'Summe
            .Columns(4).FormulaR1C1 = "=IF(RC1<>R[1]C1,1,R[1]C+1)"          'Anzahl
            .Columns(2).FormulaR1C1 = "=IF(RC1<>R[-1]C1,RC[1]/RC[2],"""")"  'Mittelwert
            .Formula = .Value
        End With
   End With
   .Range("A:F").RemoveDuplicates 1 And 2, xlYes
   .Range("E:G").EntireColumn.Delete
   .Range("B1:D1").Value = Array("Min", "Max", "Mittelwert")
End With
End Sub
Ein Problem was mir dabei u.a. aufgefallen ist, die kopierten Datumswerte werden nach dem Datum sortiert und am Ende auch gelöscht. Jedoch möchte ich ja das jedes Jahr einzeld berücksichtigt wird und nicht jedes Datum extra.
Kannst du dir das ganze vielleicht nochmal zu gemüte führen?
Grüße,
Manuel

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Daniel
Geschrieben am: 26.10.2015 23:03:06
Hi
schau mal_
die Formel für das maximum lautet bisher (Produkt in Spalte A, Zahl in Spalte B, Formel in C2)

=Wenn($A2<>$A3;B2;Max($B2;C3))
wenn jetzt das Datum in Spalte B hinzukommt und die Zahl nach C wandert, muss die Formel lauten, wenn du nach Jahr und Produkt zusammenfassen willst (Formel in D2):
=Wenn(Oder($A2<>$A3;$B2<>$B3);$C2;Max($C2;D3))
so kannst du dann auch die anderen Formeln anpassen.
mach das erstmal von Hand (nachdem du auch das kopieren und sortieren von Hand gemacht hast)
wenn die Formeln dann den passenden Wert liefern, kannst du dir die Formelschreibweise für den VBA-Code anschauen, in dem du die Zelle mit der Formel selektierst und dann im Direktfenster den Befehl ?Selection.FormulaR1C1 eingibst, oder du das eingeben der Formel mit dem Recorder aufzeichnest. (wenn du die Formeln in Excel in die Tabellen schreibst, solltest so alle Zellbezüge absolut setzen, für die das möglich ist. die Formeln werden dann in der VBA-Schreibweise R1C1 übersichtlicher.
auch das mit dem RemoveDuplicates solltest du dir nochmal mit dem Recorder aufzeichen und genauer anschauen, wie das beschrieben wird wenn mehrere Spatlen für die Duplikatprüfung verwendet werden.
Gruss Daniel

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Peter Feustel
Geschrieben am: 26.10.2015 22:39:00
Hallo Manuel,
hier kommt meine VBA Lösung, vielleicht entspricht die deinen Vorstellungen.
Gruß Peter

https://www.herber.de/bbs/user/101051.xlsm

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Manuel
Geschrieben am: 26.10.2015 23:36:27
Hallo Peter,
auch dein Makro passt perfekt auf meine Bedürfnisse. Nur eine Kleinigkeit habe ich noch. Ist es möglich in deinem Makro das ganze noch nach Datum anzuordnen?
In Spalte E stehen das Datum an dem die Teile gemessen wurden, bspw. 27.10.2015 und 01.10.2013, die meisten Teile werden mehrmals im Jahr gemessen. Kann man dein Makro noch ergänzen um diese Faktoren, so dass in der Tabelle Informationen für jedes Teil die entsprechende Jahreszahl (also nur 2015, und keine einzelnen Datumsangaben) steht, und daneben wie jetzt angegeben die Werte zu Min,Max...?
Als Beispiel weil ich es glaube ich nicht ausreichend erklären kann:
Spalte A Spalte B Spalte C ...
Teilname Jahr Bewertung...
Teil 1 2015 Anzahl...
Teil 1 2013 Anzahl...
Teil 2 2015 Anzahl...
Ich hoffe ich konnte es ausreichend erklären.
Viele Grüße,
Manuel

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Daniel
Geschrieben am: 27.10.2015 08:05:23
Hi
du kannst deine Anforderung auch mit den bestehenden Makros ganz einfach lösen, wenn du in der UpLoad-tabelle eine Hilfsspalte einfügst, in welcher du Jahr und Teil zu einem Wert zusammen fasst (=C2&"-"&E2) und dann diese Hilfsspalte anstelle von Spalte C verwendest.
Gruß Daniel

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Manuel
Geschrieben am: 27.10.2015 11:54:12
Hallo Daniel!
Ich verstehe den Zweck vom zusammenfügen, jedoch steht in der Datumsspalte ein vollständiges Datum sprich 01.05.2015, wenn ich jetzt die Zellen in eine Hilfszelle zusammenfüge übernimmt der ja das vollständige Datum?!
Grüße

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Peter Feustel
Geschrieben am: 27.10.2015 12:46:50
Hallo Manuel,
hier ist meine Makro-Lösung mit dem Jahr aus einem Datum in Spalte E.
Gruß Peter
https://www.herber.de/bbs/user/101059.xlsm

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Manuel
Geschrieben am: 27.10.2015 13:29:25
Hallo Peter!
Danke für deine Lösung. Klappt super, eine nachfrage habe ich allerdings. Ich habe die Zeile"Gesamt" noch nicht. Dafür habe ich jetzt mal deinen Makro genommen den du zuvor hochgeladen hattest und rufe ihn mit Call Artikel... auf. Jedoch schreibt er mir meinen "Gesamt" Eintrag von jedem Teil immer in die erste Zeile und nicht vor jedes Teil.
Dein Makro was ich etwas angepasst habe ist dieser:

Public Sub Nach_Artikel_addieren_I()
Dim Dic_Zaehlen  As Object
Dim Dic_Summe    As Object
Dim vTemp        As Variant
Dim iTemp        As Integer
Dim lZeile       As Long
Dim dMin         As Double
Dim dMax         As Double
Dim lLetzte      As Long
   Application.ScreenUpdating = False
   
   Set Dic_Zaehlen = CreateObject("Scripting.Dictionary")
   Set Dic_Summe = CreateObject("Scripting.Dictionary")
   
   With ThisWorkbook.Worksheets("Upload")
      vTemp = .Range("C2:O" & .Cells(.Rows.Count, 3).End(xlUp).Row)
   End With
   
   For iTemp = 1 To UBound(vTemp)
      Dic_Zaehlen(vTemp(iTemp, 1)) = Dic_Zaehlen(vTemp(iTemp, 1)) + 1             ' das Item um  _
1 hochzählen
      Dic_Summe(vTemp(iTemp, 1)) = Dic_Summe(vTemp(iTemp, 1)) + vTemp(iTemp, 13) ' den Wert in  _
O zu dem Item dazuaddieren.
   Next iTemp
'     Ausgabe in die Spalten A:M
   With ThisWorkbook.Worksheets("Informationen")
   lLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
      If lLetzte < 4 Then lLetzte = 4
      .Range("A4").Resize(Dic_Zaehlen.Count) = WorksheetFunction.Transpose(Dic_Zaehlen.keys)  '  _
die Artikel
      .Range("B4").Resize(Dic_Zaehlen.Count) = "Summary"
      .Range("C4").Resize(Dic_Zaehlen.Count) = WorksheetFunction.Transpose(Dic_Zaehlen.Items) '  _
die Anzahl
      .Range("D4").Resize(Dic_Zaehlen.Count) = WorksheetFunction.Transpose(Dic_Summe.Items)   '  _
die Summe
   
      For lZeile = 4 To .Cells(.Rows.Count, 1).End(xlUp).Row
         dMin = 99999.99
         dMax = -99999.99
         For iTemp = 1 To UBound(vTemp)
            If .Range("A" & lZeile).Value = vTemp(iTemp, 1) Then
               If vTemp(iTemp, 13) < dMin Then dMin = vTemp(iTemp, 13)
               If vTemp(iTemp, 13) > dMax Then dMax = vTemp(iTemp, 13)
            End If
         Next iTemp
         .Range("D" & lZeile).Value = dMin
         .Range("E" & lZeile).Value = dMax
         If .Range("C" & lZeile).Value <> 0 Then _
            .Range("F" & lZeile).Value = .Range("D" & lZeile).Value / .Range("C" & lZeile). _
Value
      Next lZeile
   End With
   
   Application.ScreenUpdating = True
End Sub
Kannst du mir dabei nochmal helfen?
Liebe Grüße,
Manuel

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Peter Feustel
Geschrieben am: 27.10.2015 13:56:32
Hallo Manuel,
wo möchtest du eine Summe gesamt haben, davon habe ich bisher in deinen Fragen nichts gefunden.
Gruß Peter

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Peter Feustel
Geschrieben am: 27.10.2015 14:13:49
Hallo Manuel,
erwartest du die Summe so, wie es dieses Makro - übrigens jetzt mit Dokumentation - ausgibt?
Gruß Peter

Public Sub Nach_Artikel_addieren() ' dieses Makro berücksichtigt die Jahreszahl aus dem Datum  _
in Spalte E
Dim Dic_Zaehlen  As Object  ' das Dictionary Objekt zum Zählen der Vorkommen
Dim Dic_Summe    As Object  ' das Dictionary Objekt zur Addition der Werte
Dim vTemp        As Variant ' ein tempoträrer Array zur schnelleren Bearbeitung
Dim iTemp        As Integer ' der For/Next Schleifen Index zum temporären Array
Dim sText        As String  ' der zusammengesetzte Key zur Speicherung im Dictionary
Dim lLetzte      As Long    ' dei letzte belegte Zeile im Ergebnis-Blatt
Dim vSplit       As Variant ' ein Bereich zum erneuten Aufteilen der Key-Werte
Dim lZeile       As Long    ' For/Next Schleifen-Index -hier die Zeile
Dim dMin         As Double  ' der Minimal-Wert
Dim dMax         As Double  ' der Maximal-Wert
   Application.ScreenUpdating = False ' kein Bildschirm-Update während des Makro-Laufs
   
   Set Dic_Zaehlen = CreateObject("Scripting.Dictionary") ' das Dictionary zuordnen
   Set Dic_Summe = CreateObject("Scripting.Dictionary")   ' das Dictionary zuordnen
   
'     zur schnelleren Bearbeitung (besseren Performance) die Eingaben in ein Array speichern
   With ThisWorkbook.Worksheets("Upload")
      vTemp = .Range("C2:O" & .Cells(.Rows.Count, 3).End(xlUp).Row)
   End With
   
'     die Eingabe-Werte an die Dictionary übergeben
   For iTemp = 1 To UBound(vTemp)
'        den Key aus Artikelnummer und Jahr zusammensetzen
      sText = Trim$(vTemp(iTemp, 1)) & "##" & Year(vTemp(iTemp, 3))
      Dic_Zaehlen(sText) = Dic_Zaehlen(sText) + 1             ' das Item um 1 hochzählen
      Dic_Summe(sText) = Dic_Summe(sText) + vTemp(iTemp, 13)  ' den Wert in O zu dem Item  _
dazuaddieren.
   Next iTemp
'     Ausgabe in die Spalten A:G
   With ThisWorkbook.Worksheets("Informationen")
      lLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row ' die letzte belgte Zeile in Spalte 1 = A  _
feststellen
      If lLetzte < 4 Then lLetzte = 4                ' ist die letzte Spalte < 4, dann wird sie  _
auf 4 gesetzt
      .Range("A4:G" & lLetzte).ClearContents ' den Ausgabe-Bereich leeren/löschen
      .Range("A4").Resize(Dic_Zaehlen.Count) = WorksheetFunction.Transpose(Dic_Zaehlen.keys)  '  _
die Artikel
      .Range("C4").Resize(Dic_Zaehlen.Count) = WorksheetFunction.Transpose(Dic_Zaehlen.Items) '  _
die Anzahl
      .Range("D4").Resize(Dic_Zaehlen.Count) = WorksheetFunction.Transpose(Dic_Summe.Items)   '  _
die Summe
   
'        die Daten nach Artikel + Jahr sortieren
      lLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
      If lLetzte < 4 Then lLetzte = 4
      .Range("A4:D" & lLetzte).Sort _
          Key1:=.Range("A4"), _
          Order1:=xlAscending, _
          Header:=xlNo, _
          OrderCustom:=1, _
          MatchCase:=False, _
          Orientation:=xlTopToBottom
   
'        den Min- Max- und Durchschitts-Wert ermitteln
      For lZeile = 4 To lLetzte
         dMin = 99999.99
         dMax = -99999.99
         For iTemp = 1 To UBound(vTemp)
'              Artikel und Jahr an Trenner '##' splitten
            vSplit = Split(.Range("A" & lZeile).Value, "##")
'              handelt es sich um den Artikel und die Jahreszahl?
            If vSplit(0) = vTemp(iTemp, 1) And Val(vSplit(1)) = Year(vTemp(iTemp, 3)) Then
'                 den Min- und den Max-Wert ermitteln
               If vTemp(iTemp, 13) < dMin Then dMin = vTemp(iTemp, 13)
               If vTemp(iTemp, 13) > dMax Then dMax = vTemp(iTemp, 13)
            End If
         Next iTemp
         .Range("E" & lZeile).Value = dMin ' den Min-Wert ausgeben
         .Range("F" & lZeile).Value = dMax ' den Max-Wert ausgeben
'           den Durchschnitts-Wert errechnen
         If .Range("C" & lZeile).Value <> 0 Then _
            .Range("G" & lZeile).Value = .Range("D" & lZeile).Value / .Range("C" & lZeile). _
Value
'           Artiukel und Jahreszahl in getrennte Spalten ausgeben
         .Range("A" & lZeile).Value = vSplit(0)
         .Range("B" & lZeile).Value = vSplit(1)
      Next lZeile
'         die Zeile für die Gesamt-Summe aufbauen
      .Range("C" & lLetzte + 2).Value = "Gesamt"
      .Range("D" & lLetzte + 2).Value = WorksheetFunction.Sum(.Range("D4:D" & lLetzte))
   End With
   
   Application.ScreenUpdating = True ' das Bildschirm-Update wieder zulassen
   
   Set Dic_Zaehlen = Nothing ' die Ressourcen wieder freigeben
   Set Dic_Summe = Nothing
End Sub


Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Manuel
Geschrieben am: 27.10.2015 19:17:04
Hallo Peter,
danke für deine Mühe. Um auf deine Frage zuvor einzugehen: Ich wollte die Angabe "Gesamt" direkt am Anfang eines jeden Teils schreiben. Sprich sollte es so aussehen:
Spalte A Spalte B Spalte C Spalte D
Teil 1 Gesamt Anzahl Summe
Teil 1 2015 Anzahl Summe
Teil 1 2014 Anzahl Summe
Teil 2 Gesamt Anzahl Summe
Liebe Grüße,
Manuel

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Peter Feustel
Geschrieben am: 28.10.2015 13:13:24
Hallo Manuel,
dann sieh dir die beigefügte Mappe an, vielleicht entspricht sie deinen Vorstellungen.
Gruß Peter
https://www.herber.de/bbs/user/101094.xlsm

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Manuel
Geschrieben am: 28.10.2015 19:27:58
Hallo Peter,
entschudlige das ich dich nochmla nerven muss.
Aber bei der "Summe" Reihe wollte ich das auch Min,Max und die anderen Werte angegeben werden. So das man quasi in dieser Reihe nochmal einen gesamten Überblick hat, nicht nur über die Summe, sondern auch über Min, Max,..usw.
Liebe Grüße,
Manuel

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Peter Feustel
Geschrieben am: 28.10.2015 21:11:40
Hallo Manuel,
auf Raten alle Wünsche auf den Markt zu bringen mach einen Helfer nicht gerade froh, zumal auch hier wieder nicht klar ist, wie das aussehen soll.
Ich finde, ich sollte mich aus dem Projekt zurückziehen.
Gruß Peter

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Peter Feustel
Geschrieben am: 28.10.2015 21:59:30
Hallo Manuel,
das war aber nun hoffentlich die letzte Anforderung deinerseits.
Gruß Peter
https://www.herber.de/bbs/user/101109.xlsm

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Manuel
Geschrieben am: 29.10.2015 22:11:20
Hallo Peter,
danke für deine Geduld. Jetzt passt alles.
Ich kann dir nicht oft genug Danken
Grüße,
Manuel

Bild

Betrifft: AW: Minium, Maximum und Mittelwert mit VBA
von: Manuel
Geschrieben am: 31.10.2015 17:49:21
Lieber Peter und andere Forumsmitglieder,
könntet ihr mir vielleicht nochmal behilflich sein. Ich bin jetzt einen Schritt weiter und muss eine Erweiterte Auswertung starten über einen Lagerbestand.
Die aktuellen Lagerbestände werden so wie es in dem Tabellenblatt Inventory beispielhaft gezeigt ist hochgeladen. Jetzt habe ich das Tabellenblatt "Consumption" erstellt um eine Auswertung zu starten. Dafür habe ich mir die Active x Steuerelemente ComboBox und Optionbox erstellt. Bei den ComboBoxen kann man jeweils auswählen welchen Zeitraum und welches Teil die Auswertung umfasst. Der Zeitraum soll Tageweise, Monats und Jahresweise eingestellt werden. Anschließend kann mittels der Optionbox gewählt werden, ob nur ein einziger Kunde betrachtet werden soll oder nicht.
Die Auswertung würde dann so aussehen wie ich sie beispielshaft in das Sheet geschrieben habe, angefangen mit der Zeile Gesamt für ein Part, zu beachten ist dabei, dass,falls mehrere Jahre ausgewählt werden, für jedes Jahr eine Zeile Gesamt erstellt wird. Anschließend würden danach zusammengefasst die Werte für die entsprechenden Lieferanten hingeschrieben werden.
Ich hoffe ich hab es halbwegs verständlich erklären können; aber vielleicht schließen sich die letzten Fragen wenn ihr euch die Tabelle mal eben anschaut: https://www.herber.de/bbs/user/101166.xlsm
Ich hoffe ihr könnt mir helfen, vielen vielen Dank an alle und noch ein schönes Restwochenende
Grüße,
Manuel

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Minium, Maximum und Mittelwert mit VBA"