MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Office - Allgemein
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 30.12.2016, 09:10   #1
OskiH
MOF User
MOF User
Standard Off2010 - Array gruppieren, 2 Werte summieren

Hallo zusammen

Besteht die Möglichkeit einen Array nach dem Key zu gruppieren und 2 Werte zu summieren? Das Resultat möchte ich in einem neuen Array speichern.

Mein Array:
A 1 6
B 2 7
C 3 8
A 4 9
B 5 10

Mein gewünschtes Resultat:
A 5 15
B 7 17
C 3 8

Danke für eure Unterstützung.

__________________

Windows 7 Pro, Office 2010 Pro
OskiH ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 30.12.2016, 09:20   #2
ebs17
MOF Guru
MOF Guru
Standard

In einem Schritt sicher nicht, da es als Objekt für solche Aktionen ungeeignet ist. Du müsstest Schleifen laufen (das geht gut im Array) und da zusammenfassen.

Man kann sich aber die Frage stellen, woraus das Array erzeugt wird. Mit einer Tabelle ginge die gefragte Maßnahme einfach und schnell:
=> Pivottabelle in Excel
=> Abfrage in SQL
Code:

SELECT Spalte1, (SUM(Spalte2) AS Sum2, SUM(Spalte3) AS Sum3
FROM TabelleX
GROUP BY Spalte1

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 30.12.2016, 10:22   #3
OskiH
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo ebs17

Das Array wird aus einer Schleife erzeugt. Bis jetzt habe ich das Array mit folgendem Code summiert und in eine Exceltabelle geschrieben und von dort weiterverarbeitet:
Code:

 Dim Arr1 As Variant
 Dim L As Long
 Dim myDic1 As Object
 Dim myDic2 As Object
 Set myDic1 = CreateObject("Scripting.Dictionary")
 Set myDic2 = CreateObject("Scripting.Dictionary")

    For L = 1 To UBound(Arr1)
        myDic1(Arr1(L, 1)) = myDic1(Arr1(L, 1)) + Arr1(L, 2)
        myDic2(Arr1(L, 1)) = myDic2(Arr1(L, 1)) + Arr1(L, 3)   
    Next
    
    .Range("D1").Resize(myDic1.Count) = WorksheetFunction.Transpose(myDic1.keys)
    .Range("E1").Resize(myDic1.Count) = WorksheetFunction.Transpose(myDic1.items)
    .Range("F1").Resize(myDic1.Count) = WorksheetFunction.Transpose(myDic2.items)
Ich bewege mich hier auf Neuland und habe den obenstehenden Code aus der grossen www-Welt. Was der Code macht sehe ich zwar, aber im einzelnen kann ich diesen nicht erklären. Ist dieser "Umweg" über eine Tabelle wirklich nötig? Eigentlich dachte ich mir, statt in die Tabelle zu schreiben direkt in ein Array.

Oskar

__________________

Windows 7 Pro, Office 2010 Pro
OskiH ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 30.12.2016, 23:11   #4
ebs17
MOF Guru
MOF Guru
Standard

Die Verwendung von Dictionaries senkt den Aufwand für Schleifendurchläufe sinnvoll und performant ab. Aber systemisch ändert das nicht viel.

Zitat:

Das Array wird aus einer Schleife erzeugt.

Vielleicht denkt man diverse Schritte vorher darüber nach, was und womit man etwas tut.
Womöglich entstammen die Werte einer Tabelle, womit man dann eine Tabelle nicht als Umweg, sondern als Ausgangspunkt sehen könnte, bei gespeicherten Daten ein durchaus typischer Fall.

//Edit Ein solch reines Excelthema würde man auch besser im Excelforum besprechen.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.