Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Stücklistenproblem - VBA

Forumthread: Stücklistenproblem - VBA

Stücklistenproblem - VBA
Jean
Guten Abend,
in einer Excel-Tabelle1 sind in Spalte A TeileNr, in Spalte B Mengen. Es können Duplikate vorkommen.
Wie kann man per VBA die Anzahl der Unikate ermitteln und die Artikel so in einem zweidimensionalen Array so erfassen, dass jeder Artikel nur einmal auftaucht und die Gesamtmenge pro Artikel ermittelt wird?
Gruß
Jean
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Stücklistenproblem - VBA
14.10.2011 07:14:27
Walter
https://www.herber.de/bbs/user/76998.xls
AUSWERTUNG AUF EINEM ANDEREN BLATT
Gruß
Walter
Anzeige
Es sollte VBA sein
14.10.2011 18:20:38
Jean
Hallo Walter,
Du hast mir da 2 wunderbare Lösungen gepostet. Vielen Dank dafür: Sie sind bereits gespeichert.
Leider benötige ich eine VBA-Lösung. Mal sehen ob vielleicht doch noch ein Lösungsvorschlag angezeigt wird.
Ein schönes Wochenende.
Gruß
Jean
AW: Es sollte VBA sein
14.10.2011 23:07:48
CitizenX
Hi Jean,
Option Explicit

Sub sumUnique1()
'Listet die Unikate aus Spalte 1 auf .
'Gibt Die Bezeichnung dieser aus.
'Summiert deren Stückzahlen
'Ausgabe erfolgt im Bereich E:G
Dim i&, lngLast&
Dim oDict As Object, oDict1 As Object
lngLast = Cells(Rows.Count, 1).End(xlUp).Row
Set oDict = CreateObject("scripting.dictionary")
Set oDict1 = CreateObject("scripting.dictionary")
For i = 2 To lngLast
oDict(Cells(i, 1).Value) = oDict(Cells(i, 1).Value) + Cells(i, 3).Value
oDict1(Cells(i, 1).Value) = Cells(i, 2).Value
Next
Cells(2, 5).Resize(lngLast, 3).ClearContents
Cells(2, 5).Resize(oDict.Count, 1) = Application.Transpose(oDict.Keys)
Cells(2, 6).Resize(oDict.Count, 1) = Application.Transpose(oDict1.items)
Cells(2, 7).Resize(oDict.Count, 1) = Application.Transpose(oDict.items)
Set oDict = Nothing
Set oDict1 = Nothing
End Sub


Sub sumUnique2()
'Listet die Unikate aus Spalte 1 auf .
'Summiert deren Stückzahlen
'Ausgabe erfolgt im Bereich E:F
Dim i&, lngLast&
Dim oDict As Object
lngLast = Cells(Rows.Count, 1).End(xlUp).Row
Set oDict = CreateObject("scripting.dictionary")
For i = 2 To lngLast
oDict(Cells(i, 1).Value) = oDict(Cells(i, 1).Value) + Cells(i, 3).Value
Next
Cells(2, 5).Resize(lngLast, 2).ClearContents
Cells(2, 5).Resize(oDict.Count, 1) = Application.Transpose(oDict.Keys)
Cells(2, 6).Resize(oDict.Count, 1) = Application.Transpose(oDict.items)
Set oDict = Nothing
End Sub

Grüße
Steffen
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige