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

Array Berechnungen

Array Berechnungen
20.04.2015 09:10:44
Enrico
Hallo zusammen
ich muss in einer Tabelle ein paar Werte berechnen.
Als Array Neuling habe ich versucht dies mit einem Array zu tun.
Leider komm ich nicht wirklich vorwärts.
Die Daten liegen in folgendem Format vor.
A | C | 2
A | C | 2
A | D | 30
A | D | 30
B | C | 400
B | C | 400
B | D | 5000
B | D | 5000
Natürlich sind es deutlich mehr Daten und sortiert sind sie auch nicht.
Ziel ist es nun mittels Array von jeder Kombination (AC,AD,BC,BD) den Mittelwert aus Spalte 3 zu berechnen.
Als erstes müsste also jede vorhandene Kombination ermittelt werden, dann die Werte zugeordnet und am Ende der Mittelwert berechnet werden.
Klingt einfach ... aber ich komm nicht weiter.
Hab bisher im Forum gefunden wie ich die verschiedenen Kombinationen auslese.
Set Dic = CreateObject("Scripting.Dictionary")
For L = 1 To UBound(myAR)
Dic(myAR(L, 1)) = 0
Next
myAR2 = Dic.keys
Wäre über ein paar Anregungen dankbar.
Mfg Enrico

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Array Berechnungen
20.04.2015 09:52:27
Nepumuk
Hallo,
da du nicht schreibst wo die Werte ausgegeben werden sollen, zeige ich sie im Direktfenster an:
Option Explicit

Public Sub Test()
    Dim lngRow As Long
    Dim alngValues() As Long, ialngIndex As Long
    Dim avntValues As Variant, avntKeys As Variant, avntItems As Variant
    Dim strTemp As String
    Dim objDictionay As Object
    Set objDictionay = CreateObject("Scripting.Dictionary")
    avntValues = Range(Cells(1, 1), Cells(Rows.Count, 3).End(xlUp)).Value2
    For lngRow = 1 To UBound(avntValues)
        strTemp = Trim$(avntValues(lngRow, 1)) & Trim$(avntValues(lngRow, 2))
        If objDictionay.Exists(strTemp) Then
            alngValues(1, objDictionay(strTemp)) = _
                alngValues(1, objDictionay(strTemp)) + avntValues(lngRow, 3)
            alngValues(2, objDictionay(strTemp)) = _
                alngValues(2, objDictionay(strTemp)) + 1
        Else
            ialngIndex = ialngIndex + 1
            Redim Preserve alngValues(1 To 2, 1 To ialngIndex)
            objDictionay(strTemp) = ialngIndex
            alngValues(1, ialngIndex) = avntValues(lngRow, 3)
            alngValues(2, ialngIndex) = 1
        End If
    Next
    avntKeys = objDictionay.keys
    avntItems = objDictionay.Items
    Set objDictionay = Nothing
    For ialngIndex = 0 To UBound(avntKeys)
        Debug.Print avntKeys(ialngIndex), alngValues(1, avntItems(ialngIndex)) / _
            alngValues(2, avntItems(ialngIndex))
    Next
End Sub

Gruß
Nepumuk

Anzeige
AW: Array Berechnungen
20.04.2015 10:20:14
Enrico
Vielen Dank
Das funktioniert erst mal.
Ich werde noch ein paar Anpassungen vornehmen und mich melden, wenn ich noch ein paar Fragen haben.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige