VBA: Range in Array laden, SVerweis, auslesen

Moderator: ModerationP

Re: VBA: Range in Array laden, SVerweis, auslesen

Beitragvon Ralf A » 01. Jul 2019, 19:15

@Flotter Feger,

Die spielt nicht ... die will nur beissen ...

...laut lach! Seit wann denn das? Hast Du Dich irgendwo angesteckt? :mrgreen:

Hi Sludy,

weshalb solch unnötigen Klimmzüge via VBA? Oder vorhandene Daten nochmal in ein Array, Dictionary oder sonstwas laden? Und 2 Stunden für die Berechnung? Wow... in welche Galaxy schickst Du die Daten? :roll:

Mach eine intelligente Tabelle aus Deinem Datenbereich. Dann kannst Du eine Ergebniszeile hinzufügen oder in einer Zelle deiner Wahl folgende Funktion einfügen:
=TEILERGEBNIS(9;tblDaten[[#Daten];[Menge]])

Voraussetzung,tblDaten ist der Name der intelligenten Tabelle. Dann kannst Du Dir auch den Button sparen und erhältst in Nullkommanix das gefilterte Ergebnis. Optional kannst Du auch Slicer einsetzen.
Weiterer Vorteil, Du musst Dich nicht um die Erweiterung der Tabellenbereiche kümmern..
Sh. Anhang Blatt AlternativTest
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Ciao, Ralf
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.

Bild
Ralf A
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 587
Registriert: 17. Mär 2018, 11:47

Re: VBA: Range in Array laden, SVerweis, auslesen

Beitragvon DerHoepp » 02. Jul 2019, 10:39

Moinsen,

noch viel einfacher ist eine Pivottabelle.

Viele Grüße
derHöpp
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8366
Registriert: 14. Mai 2013, 11:08

Re: VBA: Range in Array laden, SVerweis, auslesen

Beitragvon Sludy » 30. Okt 2019, 11:44

Hallo Daniel,

du sagtest, dass das letzte Vorkommen des Materials in der Ausgangstabelle ausgegeben wird. Wie müsste man den Code umändern, damit nicht das letzte sondern stets das erste Vorkommen ausgegeben wird?

slowboarder hat geschrieben:HI
sammle die Daten in einem zweiten Dictinary und spiele sie dann für die Ausgabe dazu:

Code: Alles auswählen
Sub Summe()

Dim t As Double

 t = Timer


Dim dict As Object
Dim arr As Variant, arr2 As Variant
Dim L As Long
arr = Sheets("Test").Range("A7:E20").Value

Set dict = CreateObject("scripting.dictionary")
Set dict2 = CreateObject("scripting.dictionary")
'Berechnen
For L = 1 To UBound(arr)
    dict(arr(L, 1)) = dict(arr(L, 1)) + arr(L, 2)
    dict2(arr(L, 1)) = Array(arr(L, 3), arr(L, 4), arr(L, 5))
Next

'Ausgabe
With Sheets("Auswertung").Range("B3:F9")
    arr2 = .Value
    For L = 1 To UBound(arr2)
        If dict.exists(arr2(L, 1)) Then
            arr2(L, 2) = dict2(arr2(L, 1))(0)
            arr2(L, 3) = dict(arr2(L, 1))
            arr2(L, 4) = dict2(arr2(L, 1))(1)
            arr2(L, 5) = dict2(arr2(L, 1))(2)
        End If
    Next
    .Value = arr2
End With



MsgBox Timer - t & " sec", , "Makrolaufzeit"

End Sub

ich gehe mal davon aus, dass die Zusätzlichen Daten für jedes Material gleich sind.
sollten sie es nicht sein, so wird der zustand des letzten Vorkommens des Materials in der Ausgangstabelle verwendet

Gruß Daniel


VG Sludy
Sludy
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 110
Registriert: 22. Jul 2016, 11:49

Re: VBA: Range in Array laden, SVerweis, auslesen

Beitragvon Sludy » 30. Okt 2019, 12:10

Hallo zusammen,

habe die Lösung selbst gefunden:

Code: Alles auswählen
For L = 1 To UBound(arr1)

        If L = 1 Then
       
            dict1(arr1(L, 1)) = Array(arr1(L, 2), arr1(L, 3), arr1(L, 4))
       
        Else
       
            If arr1(L, 1) <> arr1(L - 1, 1) Then
           
            dict1(arr1(L, 1)) = Array(arr1(L, 2), arr1(L, 3), arr1(L, 4))
       
            End If
       
        End If
     
    Next

Gruß Sludy
Sludy
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 110
Registriert: 22. Jul 2016, 11:49

Vorherige

Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: dera1, TommyDerWalker und 24 Gäste