Auslesen eines Arrays

Hauke_Rabauke

Grünschnabel
Moinsen Rabauken,

ich hab mal ne Frage an Euch Experten und hoffe ihr könnt mir als ambitionierten Quereinsteiger weiterhelfen.

Ich würde das jetzt eigentlich mit einr Do while Schleife lösen, will mich aber auch mal weiterentwoíckeln und versuchen das über ein Array zu lösen.
Würde den ganzen Prozess höchst wahrscheinlich performanter machen.

ALso hier das Problem:
Ich bekomme eine Auswertung aus einem HTML-Formular als *.xlsx in folgendem Format (ähnliches Beispiel als Anhang)

BeispielAusgabeMatrix.PNG


ich habe jetzt schon die Namen und Projekte mit folgendem Code in ein Array gelesen:
(im Original fängt der Werte Bereich in Cells(6,2) an)

Code:
Public Function MatrixFüllen() As Variant()
    Dim ZeileNr     As Integer   
    Dim SpalteNr    As Integer   
    Dim Matrix()    As Variant   
    Dim intZeileMatrix As Integer
    Dim intSpalteMatrix As Integer
   
    ' Matrix auf Zeilen- und Spaltenzahl der Auswahl bringen
    ' Dabei soll jeder Index bei 1 beginnen
    ReDim Matrix(1 To 67, 1 To 51)
    intZeileMatrix = 1
    intSpalteMatrix = 1
    ' Auswahl zeilenweise lesen
    For ZeileNr = 6 To ActiveSheet.UsedRange.Rows.Count
        ' Auswahl spaltenweise lesen
        For SpalteNr = 2 To ActiveSheet.UsedRange.Columns.Count - 1
            With Cells(ZeileNr, SpalteNr)
                If Not IsEmpty(.Value) Then
                    ' Matrix elementweise füllen
                    Matrix(intZeileMatrix, intSpalteMatrix) = Cells(ZeileNr, SpalteNr).Value
'                Else
'                    ' Fehlermeldung ausgeben
'                    MsgBox "Zelle " & .Address & " enthält keine Zahl"
'                    Exit Function
                End If
            End With
            intSpalteMatrix = intSpalteMatrix + 1
        Next SpalteNr
        intZeileMatrix = intZeileMatrix + 1
        intSpalteMatrix = 1
    Next ZeileNr
   
    ' Rückgabewert der Funktion
    MatrixFüllen = Matrix
End Function

Das funzt auch super, schwuppdiwupp ist das array eingelesen. Hammer hätt ich nie gedacht, dass das so schnell geht. Wenn ich mich hoffentlich bald besser mit Arrays auskenne, werde ich das häufiger nutzen. Aber nun zu meinem Problem.

In einem Ausgabesheet für eine Serienbrieffunktion (das ganze soll Teil einer bestehenden, umfangreicheren Anwendung werden...) soll das Ergebnis wie folgt ausgegeben werden.

Max Muster Projekt5 Projekt8

Es soll also der Vorname Nachname und das jeweilige Projekt ausgegeben werden wenn in der Zeile ne "1" steht.

Ich hoffe, das Problem ist für nicht zu profan, wie gesagt ich fange gerade erst an mich mit Arrays ins VBA zu beschäftigen.

Grüßle und besten Dank vorab

Hauke
 

Anhänge

  • Projekte.zip
    6,3 KB · Aufrufe: 1
Zuletzt bearbeitet:
Hallo Hauke,

besteht dein Problem noch? Ich frage, weil du dieses Thema als erledigt markiert hast. Das andere Thema (Duplikat von diesem hier) habe ich - wie von dir gewünscht - gelöscht.
 
sorry, besteht weiterhin, hab ich mich wohl verklickt...

Über nacht ist mir eine iddee gekommen. Aber die Umsetzung....wie Schleife ich denn durch die array Felder?
 
Also wenn dein Aufbau wie oben beschrieben ist, würde ich es als ersten Versuch so angehen:
1) Ein 1D-Array für die Projekte
arrProjekt(1)="Projekt 1"
arrProjekt(2)="Projekt 2"
Also Index des Arrays entspricht der "Zahl" des Projekts.
2) ein 2D-Array für die Zeilen arrZeile(1 to 3, 1 To AnzahlZeilen) --> Ein Redim kann nur auf die letzte Dimension gemacht werden)

Beim Durchlauf pro Zeile die Spalten durchlaufen, und eine BitMask für die Projekte erstellen.
So ist es dann einfach in einer Schleife die Bitmask zu durchlaufen, um dann den Ausgabe-String zusammenzubauen.
 
Zurück