Hallo,
ich muss eine ABC Analyse durchführen.
https://scontent-fra3-1.xx.fbcdn.net/t31.0-8/14753288_1018048988321524_2691121002497646177_o.jpg
Am Fotos sieht man links die Daten, rechts wie es danach aussehen soll.
Ich habe es bereits geschafft die Daten zu sortieren und auch eien kummulierte Spalte mit den kummulierten werten zu erstellen.
In einem anderen Tabellenblatt kann der User die Eintellungen festlegen, das heißt die Prozentwerte für Kategorie A, B und C. Je nach dem sollen die Zeilchen dann rot, gelb und grün formatiert werden. Die Farben kann der User auch in dem anderen Tabellenblatt festlegen.
Es sollen auch alle Art von Daten und Tabellen verwendet werden, desswegen habe ich für die auswertung der Reichung und der kummuliertern Werte folgenden Code verwendet:
Sub sortData()
Dim DataRange As Range
Dim ValueData As Range
Dim OutputData As Range
Dim i As Integer
Dim n As Integer
Dim header As String
Dim weight As Double
'user selects the data with a range
Set DataRange = Application.InputBox(Prompt:="Please select the total data including the header", title:="Select Data", Type:=8)
Set ValueData = Application.InputBox(Prompt:="Please select the values/index weightings including the header", title:="Select Values", Type:=8)
Set OutputData = Application.InputBox(Prompt:="Please select the range for the output of the weights", title:="Select Range for Output", Type:=8)
'sorts data in descending order
DataRange.Sort key1:=ValueData, order1:=xlDescending, header:=xlYes
'counts cells with values
n = ValueData.Cells.Count
'produces the column with the cumulated weights
For i = 1 To n
If i = 1 Then
header = "Weighting"
OutputData(i, 1) = header
ElseIf i = 2 Then
weight = ValueData(i, 1).Value
OutputData(i, 1) = weight
ElseIf i > 2 Then
weight = weight + ValueData(i, 1).Value
OutputData(i, 1) = weight
End If
Next i
End Sub
Die Daten für die Formatierung würde ich weider mit der Inputbox auswählen, dies habe ich wie folgt bisher gelöst:
Sub categories()
Dim Outputcategories As Range
Dim categorieRange As Range
Set categorieRange = Application.InputBox(Prompt:="Please selct the values which should be categoriezed", title:="Select Values", Type:=8)
Set Outputcategories = Application.InputBox(Prompt:="Please select the row where the categories should be written", title:="auswertung", Type:=8)
End Sub
Der User kann auch die Namen für die 3 Kategorien zB A B und C in dem anderen Tabellenblatt festlegt, diese sollen dann genauso wie die bunte formatierung eingefügt werden.
Könnte mir hier vielleicht jemand weiterhelfen wie ich das durchführen kann?
Vielen Dank schon im Voraus
Markus
|