Forums Neueste Beiträge
 

Array Frage

18/12/2007 - 08:34 von Alexander Lorenz | Report spam
Hi Gruppe,
ich muss aus 3 verschiedenen Arbeitsblàttern (Sheet 2-4),
Daten checken, die im Sheet 1 in Spalte A stehen.
Mein Programm (VBA) soll folgendermaßen vorgehen.

1. Lese Cell(1,1) und prüfe, ob der Wert in Spalte 1 vom
Sheet 2-4 (countif) vorkommt. Wenn ja, dann lese den kompletten
Datensatz (ca.10 Spalten da wo der Wert gefunden wurde)

2. ich dachte mir dieses Unterfangen mittels eines Arrays zu
handeln. Sprich die Werte in ein Array einzulesen.

3. Was haltet ihr davon? Bzw. wie arbeite ich dann am besten
mit einem multidimensionalen Array (Definieren, Einlesen, Auslesen)?

vielen Dank schon einmal,
 

Lesen sie die antworten

#1 Melanie Breden
18/12/2007 - 09:51 | Warnen spam
Hallo Alexander :-)

"Alexander Lorenz" schrieb:
ich muss aus 3 verschiedenen Arbeitsblàttern (Sheet 2-4),
Daten checken, die im Sheet 1 in Spalte A stehen.
Mein Programm (VBA) soll folgendermaßen vorgehen.

1. Lese Cell(1,1) und prüfe, ob der Wert in Spalte 1 vom
Sheet 2-4 (countif) vorkommt. Wenn ja, dann lese den kompletten
Datensatz (ca.10 Spalten da wo der Wert gefunden wurde)

2. ich dachte mir dieses Unterfangen mittels eines Arrays zu
handeln. Sprich die Werte in ein Array einzulesen.

3. Was haltet ihr davon? Bzw. wie arbeite ich dann am besten
mit einem multidimensionalen Array (Definieren, Einlesen, Auslesen)?



schau dir mal folgenden Beispielcode an und experimentiere ein bischen damit:

Public Sub GetData()
Dim wks1 As Worksheet
Dim varWert As Variant
Dim varData As Variant
Dim lngSpalten As Long
Dim lngRow As Long
Dim lngSheet As Long
Dim rngFindCell As Range

Set wks1 = Worksheets(1)
lngSpalten = 10 ' Azahl Spalten

' erstes Blatt durchlaufen
For lngRow = 1 To Application.CountA(wks1.Columns(1))
varWert = wks1.Cells(lngRow, 1).Value

For lngSheet = 2 To 4
With Worksheets(lngSheet)
Set rngFindCell = .Columns(1).Find(varWert)
If Not rngFindCell Is Nothing Then
If IsEmpty(varData) Then
ReDim varData(0)
Else
ReDim Preserve varData(UBound(varData) + 1)
End If
varData(UBound(varData)) = .Cells(rngFindCell.Row, 1).Resize(1, lngSpalten)
End If
End With
Next lngSheet
Next lngRow

' Daten ausgeben
For lngRow = 0 To UBound(varData)
wks1.Cells(lngRow + 1, "T").Resize(1, lngSpalten).Value = varData(lngRow)
Next lngRow
End Sub


Mit freundlichen Grüssen
Melanie Breden

- Microsoft MVP für Excel -
www.melanie-breden.de

Ähnliche fragen