November 28, 2020, 22:57:05

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Array Ergebniss in gleiche Spalte schreiben?

Begonnen von silentwolf, April 14, 2017, 09:10:33

⏪ vorheriges - nächstes ⏩

silentwolf

Hallo!
Ich versuche mich mit Arrays etwas besser auszukennen und hab auch schon erste Erfolge damit..
Im darunter stehenden Code funktioniert soweit das es mir die Gewünschten Ergebnisse in einem Array auslesen kann.
Sub UeberweisungAusTextMitArray()
    Dim Lastschrift() As String
    Dim lngRow As Long
    Dim i As Integer
   
    i = 0
    lngRow = 2
   
    ReDim Lastschrift(0) 'resize so it holds 1 string
   
    Do Until Cells(lngRow, 4).Value = ""
        If Cells(lngRow, 5).Value Like "ÜBERWEISUNG*" Then
            Lastschrift(i) = UeberweisungAusTextInArray(Cells(lngRow, 5))
            i = i + 1
            ReDim Preserve Lastschrift(i)
        End If
        lngRow = lngRow + 1
    Loop
    ReDim Preserve Lastschrift(i - 1)

   Erase Lastschrift
   
End Sub


Wie müsste ich denn diesen Code ergänzen damit ich dieses Array in die Selbe Spalte wieder einfügen kann?
Also ich würde gerne dieses Array auswerten und danach wieder in die selbe Spalte einfügen die anderen Werte sollen aber nicht überschrieben werden?
Könnt Ihr mir bitte etwas Hilfe leisten?

Danke
Albert

Beaker s.a.

Hallo Albert,
Als erstes würde ich die Schleife umschreiben.
    Do Until Cells(lngRow, 4).Value = ""
        i = i + 1
        ReDim Preserve Lastschrift(i)
        If Cells(lngRow, 5).Value Like "ÜBERWEISUNG*" Then
            Lastschrift(i) = UeberweisungAusTextInArray(Cells(lngRow, 5))
        End If
        lngRow = lngRow + 1
    Loop

Dabei entfällt das ReDim nach der Schleife.

Rückwärts müsste so laufen (Luftcode)

For i = 0 To UBound(Lastschrift)
    Cells(i + 2, 5) = Lastschrift(i)
Next i


gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

Lachtaube

Einfacher und schneller fährt man, wenn man aus dem Range ein Array erzeugt und dieses durchsucht.Option Explicit

'Blatt-Klassenmodul

Public Sub CollectData_Click()
   Dim aSrc(), aDest(), i&, j&

   'Bereich um "B2" auswählen
   With Me.Range("B2").CurrentRegion
      'die oberste Zeile (Überschriften) aus dem Bereich entfernen und einem
      'Array zuweisen
      aSrc = .Offset(1).Resize(.Rows.Count - 1)
   End With
   
   'Ziel-Array ausreichend bemessen
   ReDim aDest(UBound(aSrc) - 1)
   'für alle Zeilen im Quell-Array
   For i = 1 To UBound(aSrc)
      'prüfen, ob die erste Spalte mit "ÜBERWEISUNG" beginnt.
      If InStr(1, aSrc(i, 1), "ÜBERWEISUNG", vbBinaryCompare) = 1 Then
         'Ergebnis im Ziel-Array sammeln und Zähler j um 1 erhöhen
         aDest(j) = Format$(aSrc(i, 2), "000.000 €"): j = j + 1
      End If
   Next
   
   'Ziel-Array auf die tatsächlich erforderliche Größe bemessen.
   If j > 0 Then ReDim Preserve aDest(j - 1)
   
   'beispielhaft das Ergebnis in einer MsgBox darstellen.
   MsgBox Join(aDest, vbNewLine), , "Überweisungen"
End Sub
Grüße von der (⌒▽⌒)

silentwolf

Hallo an Euch beiden!

Leider war ich nicht hier deshalb meine späte Rückmeldung!
Vielen Dank ich werde es mir mal genau ansehen!!

Super!

silentwolf

Hallo,
nochmal eine Frage zu Arrays.
Folgenden Code habe ich erstellt um ein Multidimensionales Array zu füllen..

Sub QuickFillArray()
    Dim Gutschriften() As Variant
       
    tblListe.Activate
   
    Gutschriften = Range("A2", Range("A1").End(xlDown).End(xlToRight))
   

    Erase Gutschriften
   
End Sub


Dieses Array besteht aus Zwei Spalten und einigen Zeilen...

Wenn ich nun in der Tabelle tblTest eine Spalte auch als Array speichere Eindimensionales Array.. kann ich dann dieses mit dem Gutschriften Array vergleichen und wenn dieser Wert im Gutschriften Array enthalten ist dieses updaten?

Zum Beispiel in tblTest im Array steht Huber GmbH, Adresse 15, Testinghof ...
In meinen Gutschriften Array steht nur Huber GmbH im ersten Datenfeld und im zweiten eine Nummer 4444

Wenn im tblTest Array Huber GmbH, Adresse 15, Testinghof...  Gutschriften Array zusammenstimmt also is Like Huber* kann ich dann in der tblTest Array 1. Huber GmbH, Adresse 15, Testinghof ... mit Huber GmbH updaten und zum zweiten in einer weiteren Spalte die Nummer 4444 eintragen.

HOffe das ist so halbwegs verständlich was ich vorhabe.. Wäre für Tipps sehr dankbar!

Albert