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

Daten Auswerten

Daten Auswerten
18.10.2008 21:43:28
Becker
Hallo Leute,
Kann mir jemand helfen biette, ein Makro von von Klaus-Dieter Oppermann richtig anzupassen;
Das Orgnalle Makro;

Sub liste_auswerten()
' findet in einer Liste, die nicht sortiert sein muss
' alle vorkommenden Artikel. Diese werden mit dem Einzelpreis
' und der Gesamtanzahl in einer neuen Liste ausgegeben.
' Der Gesamtpreis wird errechnet.
' Geschrieben von Klaus-Dieter Oppermann, Oktober 2005
' Variablen deklarieren
Dim iZiel As Integer                        ' Letzte gefüllte Zelle
Dim az As Integer                           ' Zähler für Arrayfelder
Dim i As Integer                            ' Schleifenzähler (Arrays füllen)
Dim t As Integer                            ' Schleifenzähler (Gesamtpreise und Gesamtanzahl  _
ermitteln)
Dim arr() As Variant                        ' Array für Artikelausgabe
Dim arr2() As Variant                       ' Array für Einzelpreisausgabe
iZiel = Range("A65536").End(xlUp).Row       ' Letzte gefüllte Zelle ermitteln (in Spalte A)
' Arrays dimensionieren
ReDim arr(iZiel, 0)                         ' Artikel
ReDim arr2(iZiel, 0)                        ' Einzelpreise
' Arrays mit Werten füllen
For i = 2 To UBound(arr)                                                ' laufe von Zeile 2 bis  _
_
Tabellenende
If Application.WorksheetFunction.CountIf(Range(Cells(i, 1), _
Cells(1, 1)), Cells(i, 1).Value) = 1 Then                           ' wenn Artikel das  _
erste Mal vorkommt, dann ...
arr(az, 0) = Cells(i, 1).Value                                  ' ... Name in Array  _
einlesen
arr2(az, 0) = Cells(i, 2).Value2                                ' ... Einzelpreis in  _
Array einlesen
az = az + 1                                                     ' ... Zähler für  _
Arrayfeld plus 1
End If                                                              ' Ende der Auswertung
Next i                                                                  ' Schleifenzähler plus   _
_
1
' Inhalte ausgeben
Range("E2", "E" & UBound(arr)) = arr                                    ' Artikelnamen in  _
Ausgabebereich schreiben
With Range("F2", "G" & UBound(arr))                                     ' Ausgabbereich für  _
Beträge
.NumberFormat = "#,##0.00 $"                                        ' Währungsformat  _
festlegen
.Value = arr2                                                       ' Beträge eintragen
End With                                                                ' Ende des Eintrags
For t = 2 To az + 1                                                     ' laufe von Zeile 2 bis  _
_
Listenende
Cells(t, 8) = Application.WorksheetFunction.SumIf(Range _
(Cells(232, 1), Cells(2, 1)), Cells(t, 5), Range("C2:C232"))        ' Gesamtmenge berechnen
Cells(t, 7) = Cells(t, 8) * Cells(t, 6)                             ' Gesamtpreis berechnen
Next t                                                                  ' Schleifenzähler plus   _
_
1
Columns("E:H").EntireColumn.AutoFit                                     ' Spalten auf optimale   _
_
Breite
End Sub


Gesuchte Lösung;
In Spalten A (ab A2) bis A16000 sind numerische Artikel Nummer
In Spalte F sind dessen gesammt Wert Summe
In Spalte A wiederholen sich sehr oft und sehr viel gleiche Artikel Nummer.
Mit Makro "liste_auswerten" von Klaus wollte ich die Spalte A auslesen und alle Artikel Nummer einmal auslesen.
Ab N2 sollen nach unten alle gefundene Artikel Nummer eingetragen werde.
Ab O2 sollen nach unten alle Werte(Vorsicht, es gibt positive und negative Werten) von diesen Artikel Nummer zusammen addiert werden.
In letzte O Zeile soll Gesamt Wert von O2: bis zum letzten Betrag zusammen gerechnet werden.
Als Beispiel:
Spalte A(ArtNum) ...... Spalte F(Werte)
11111.........................................3€
88888.........................................1€
11111.........................................7€
44444........................................-2€
88888.........................................9€
11111.........................................-2€
Als Lösung Ab N2:
Ab Spalte N2(Artik-Nr.) ..... ab O2(Gesm-Werte)
11111.............................................8€
44444.............................................-2€
88888............................................10€
.......................................................16€ Gesamt
das was ich probiert habe tut das nicht richt bzw. es ist ungenau.
Mein Versuch von Kluas Code:


Sub Liste_Auswerten_ausSP_A_und_SP_F()
' Geschrieben von Klaus-Dieter Oppermann, Oktober 2005
'Variablen deklarieren
Dim iZiel As Integer                        ' Letzte gefüllte Zelle
Dim az As Integer                           ' Zähler für Arrayfelder
Dim i As Integer                            ' Schleifenzähler (Arrays füllen)
Dim t As Integer                            ' Schleifenzähler (Gesamtpreise und Gesamtanzahl  _
ermitteln)
Dim arr() As Variant                        ' Array für Artikelausgabe
Dim arr2() As Variant                       ' Array für Einzelpreisausgabe
Dim arr3() As Variant                       ' Array für Einzelpreisausgabe
iZiel = range("A16000").End(xlUp).Row       ' Letzte gefüllte Zelle ermitteln (in Spalte A)
' Arrays dimensionieren
ReDim arr(iZiel, 0)                         ' Artikel
ReDim arr2(iZiel, 0)                        ' Einzelpreise
ReDim arrA(iZiel, 0)                        ' Einzelpreise
' Arrays mit Werten füllen
For i = 2 To UBound(arr)                                                ' laufe von Zeile 2 bis  _
_
Tabellenende
If Application.WorksheetFunction.CountIf(range(Cells(i, 1), _
Cells(1, 1)), Cells(i, 1).Value) = 1 Then                           ' wenn Artikel das  _
erste Mal vorkommt, dann ...
arr(az, 0) = Cells(i, 1).Value                                  ' ... Name in Array  _
einlesen
arr2(az, 0) = Cells(i, 2).Value2                                ' ... Einzelpreis in  _
Array einlesen
'arrA(az, 0) = Cells(i, 2).Value3                                ' ... Einzelpreis in   _
_
Array einlesen
az = az + 1                                                     ' ... Zähler für  _
Arrayfeld plus 1
End If                                                              ' Ende der Auswertung
Next i                                                                  ' Schleifenzähler plus   _
_
1
' Inhalte ausgeben
range("N2", "N" & UBound(arr)) = arr                                    ' Artikelnamen in  _
Ausgabebereich schreiben
With range("O2", "P" & UBound(arr))                                     ' Ausgabbereich für  _
Beträge
' .NumberFormat = "#,##0.00 $"                                        ' Währungsformat  _
festlegen
.Value = arr2                                                       ' Beträge eintragen
'.Value = arr3                                                    ' Beträge eintragen
End With                                                                ' Ende des Eintrags
For t = 2 To az + 1                                                     ' laufe von Zeile 2 bis  _
_
Listenende
Cells(t, 15) = Application.WorksheetFunction.SumIf(range _
(Cells(16000, 1), Cells(1, 1)), Cells(t, 14), range("F2:F16000"))         ' Gesamtmenge  _
berechnen
'Cells(t, 7) = Cells(t, 8) * Cells(t, 6)                             ' Gesamtpreis  _
berechnen
Next t                                                                  ' Schleifenzähler plus   _
_
1
Columns("N:P").EntireColumn.AutoFit                                     ' Spalten auf optimale   _
_
Breite
End Sub


Ich hoffe mein Problemm wurde richtig beschrieben.
Besten Dank für allfällige Hilfe!
Daniel

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten Auswerten
18.10.2008 22:36:00
Yal
Hallo Daniel,
an deiner Frage von 18:08 habe ich als Randempfehlung vorgeschlagen, Dich mit Pivottabelle auseinander zu setzen, da das Problem danach so rauch.
Jetzt kann ich definitv sagen: Auswertung unter Excel heisst Pivottabelle. Keine Makro, keine Formeln, nur Effektivität.
Erste Schritte "Daten >> Pivottabelle und Chart ...". Der Assistent nimmt Dich an der Hand. Die Online-Hilfe beseitigt die restliche Fragen.
Viel Erfolg
Yal
AW: Daten Auswerten- HILFE BITTE!
19.10.2008 18:18:00
Becker
Hallo Yal,
danke schön für Dein netten Hinweis. Habe mich heute mit Pivot beschäftigt aber leider das ist nicht die gesuchte Lösung. Vielleicht habe ich noch nicht viel damit gearbeitet und daher habe ich nicht genug Erfahrung.
Wie Kann man dan mit Pivott Tabellen bzw. VBA den Problem Lösen?!;
- in Spalte A sind viele Artikel Nummer (die sich sehr oft wiederholen)
- in Spaltet F sind dessen Werte
Gesuchte Lösung;
- wie kann ich als Übersicht ab Spalte N2 alle Artikel Nummer einmalig aus Spalte A auslesen?
- wie kann ich ab O2 dessen Gesamt Menge addieren aus Spalte F(es gibt positive und negative Were)?
Meine 1-er Versuch;
Mit Pivott wählte ich die Daten(A:F) mit Kopf überschriften die ich auswerten wil, danach aus Pivott Feld wähle ich die Artikel Nummer sowie dessen Werte. Wenn ich Artikel Nummer 11111 wähle habe ich in Povott Tabelle ein Wert der ungenau ist.!!!
Mein 2-er Versuch;
In den Blatt wo die Daten sind gehe ich auf Filter, wähle den gewünschten Artikel Nummer 11111 und mit Formel Teil Ergebnis bekommt man den genauen Wet Summe von den gesuchten Artikel Nummer.
Es geht um ca 800 verschiedenen Artikel Nummer und um ca 16000 Zeilen.
Manuelle Lösung ist die Letzt bei mir oder mit Filter jeden einzelnen Artikel zum Filtern.
Für jede Hilfe und Anregung bin ich sehr dankbar.
Gruß Daniel
Anzeige
AW: Daten Auswerten- HILFE BITTE!
21.10.2008 12:49:23
Yal
Hallo Daniel,
ich habe noch nie ein "ungenauen" Pivot gehabt!
Es kann nicht sein, dass Excel durch einen Weg richtig und durch einen anderen falsch berechnet.
Ein Fehlerquelle ist oft, dass Filter nur einen vordefinierten Bereich erfassen, und somit nicht alle Daten berücksichtigen, was eine Pivottabelle mit "A:F" als Quelle auf allen Fällen erfasst. Aber so eine Situation hättest Du selber entdeckt. Ich bin ratlos.
Mit einer Pivot kannst Du zumindest auf die Schnelle die Einzelliste von alle Artikel, darauf kannst Du diese Liste in Spalte N kopieren, und in Spalte O eine Summewenn. Am Beispiel O2:
=SUMMEWENN(A2:A20000;N2;F2:F20000)
Viel Erfolg
Yal
Anzeige
AW: Daten Auswerten- HILFE BITTE!
21.10.2008 18:03:00
Becker
Hallo Yal,
Sorry das ich mich falsch augedruckt habe. Mit ungenau meinte ich es ist nicht das Ergeniss den ich suche.
Mein Versuch; ich markieren Daten Bereich A:F dann starte ich den PivoTable wähle in PivoTable Liste nur Artikel Nummer und Summe. Dann in der Zeilenbeschriftungs Fenster kommt Artikel Nummer und ins Summen Fenster kommt die Summe.
Ich lade nur ein kleines Beispiel hoch, bin gespannt was Du sagst.
Es liegt eher Fehler bei mir als beim PivoTable da kenne ich mich leider weniger aus.
Netten Gruß Daniel
AW: Daten Auswerten- HILFE BITTE!
22.10.2008 21:26:00
Yal
Hallo Daniel,
Sorry, aber ich bin nicht Excel 2007 tauglich. Probier mal dein Beispiel als Excel 2002-Format zu speichern.
Gruß
Yal
Üben, üben, üben ...
23.10.2008 21:53:00
Yal
Hallo Daniel,
nichts sage ich ;-) rofu hat alles gesagt.
Bloss nicht aufegeben, alles braucht Zeit.
Aber Wissen über Pivot bringt einer auf alle Fälle weit nach oben. Aus Erfahrung...
Viel Erfolg
Yal
Anzeige
AW: Üben, üben, üben ...
24.10.2008 16:46:00
Becker
Hallo,
Dank Yal und Rofu habe ich noch was dazu gelernt. Ich habe es nicht aufgegeben aber ohne nette Einweisungen hätte ich das sicher nicht geschaft. Wenn man sich bißchen mehr mit Pivot-Table auskennet
dann geht der Rest von alleine.
Mein Fehler war das ich nicht die Summe von Summe gewählt habe. Dank Euch hat es prima geklappt.
Ihr seit richtige Profis, nochmal TAUSEND MAL DANKE.
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige