Microsoft Excel

Herbers Excel/VBA-Archiv

aus Union-Range einzelne Werte auslesen

Betrifft: aus Union-Range einzelne Werte auslesen von: Peter Feustel
Geschrieben am: 31.10.2014 12:47:21

Hallo Excel Experten,

ich habe ein Tabellenblatt mit 53 Spalten und x Zeilen.
Aus diesem Tabellenblatt sollen nach mehreren (6) Kriterien Zeilen ausgewählt werden.

Das kann man ja eigentlich gut mit Union machen und hat dann einen Range der benötigten Zeilen.
Für diese gefundenen Zeilen soll ein Extrakt aus 6 Spalten erzeugt werden.

Kann man aus dem Union-Range wieder einzelne Zeilen auslesen, und wenn ja, wie.
Oder ist es besser, die Zeilen gleich in ein Array zu speichern, das man dann ganz bequem auslesen kann.

Für sachdienliche Hinweise bereits vielen Dank im Voraus.

Gruß Peter

  

Betrifft: AW: aus Union-Range einzelne Werte auslesen von: Daniel
Geschrieben am: 31.10.2014 12:59:42

Hi

wenn du mit Union die Zeilen zusammengestellt hast, kannst du dann mit Intersect aus diesen zeilen Spalten ausschneiden:

dim rngZeilen as Range
dim rngSpalten as Range
dim rngMix as range

set rngZeilen = Union(Rows(2), Rows(4), Range("6:8"), Rows(10))
Set rngSpalten = Union(Columns(3), Columns(5), Range("M:P"))
Set rngMix = Intersect(rngZeilen, rngSpalten)

Gruß Daniel


  

Betrifft: AW: aus Union-Range einzelne Werte auslesen von: Rudi Maintaire
Geschrieben am: 31.10.2014 13:11:00

Hallo,
einen derart unzusammenhängenden Bereich kannst du aber nicht einfach auslesen.
z.B. gibt Debug.Print rngMix.Cells(3,2) mitnichten den Wert aus E6 wieder, sondern aus D4, da rngMix in C2 beginnt.
Ich würde ein Array nehmen.

Gruß
Rudi


  

Betrifft: AW: aus Union-Range einzelne Werte auslesen von: Peter Feustel
Geschrieben am: 31.10.2014 13:14:43

Hallo Daniel, hallo Rudi,

danke für Eure Tipps.
Ich galebe es ist besser, gleich eine Array zur Aufnahmen der infrage kommenden Zeilen zu verwenden.

Gruß Peter


  

Betrifft: AW: aus Union-Range einzelne Werte auslesen von: fcs
Geschrieben am: 31.10.2014 13:19:09

Hallo Peter,

ich würde die Auswertung komplett über Arrays machen.

Gruß
Franz

Code-Beispiel

Sub Auswertung()
  Dim wksData As Worksheet
  Dim arrData, arrErgebnis()
  Dim Zeile_L As Long, Zeile_D As Long, Zeile_E As Long
  Dim bolTreffer As Boolean, intTreffer As Integer
  
  Set wksData = ActiveSheet
  
  With wksData
    Zeile_L = .Cells(.Rows.Count, 1).End(xlUp).Row
    arrData = .Range(.Cells(2, 1), .Cells(Zeile_L, 54))
  End With
  intTreffer = 0
  'Treffer-Zeilen markieren
  For Zeile_D = LBound(arrData, 1) To UBound(arrData, 1)
    bolTreffer = True
    If Kriterium1 = True Then
      If Kriterium2 = True Then
        If Kriterium3 = True Then
          If Kriterium4 = True Then
            If Kriterium5 = True Then
              If Kriterium6 = True Then
                intTreffer = intTreffer + 1
              Else
                bolTreffer = False
              End If
            Else
              bolTreffer = False
            End If
          Else
            bolTreffer = False
          End If
        Else
          bolTreffer = False
        End If
      Else
        bolTreffer = False
      End If
    Else
      bolTreffer = False
    End If
    arrData(Zeile_D, 54) = bolTreffer
  Next
  'Trefferzeilen auslesen
  If intTreffer > 0 Then
    ReDim arrErgebnis(1 To intTreffer, 1 To 6)
    Zeile_E = 0
    For Zeile_D = LBound(arrData, 1) To UBound(arrData, 1)
      If arrData(Zeile_D, 54) = True Then
        Zeile_E = Zeile_E + 1
        arrErgebnis(Zeile_E, 1) = arrData(Zeile_D, 1)
        arrErgebnis(Zeile_E, 2) = arrData(Zeile_D, 2)
        arrErgebnis(Zeile_E, 3) = arrData(Zeile_D, 7)
        arrErgebnis(Zeile_E, 4) = arrData(Zeile_D, 12)
        arrErgebnis(Zeile_E, 5) = arrData(Zeile_D, 22)
        arrErgebnis(Zeile_E, 6) = arrData(Zeile_D, 34)
      End If
    Next
  End If
  Erase arrData
End Sub



 

Beiträge aus den Excel-Beispielen zum Thema "aus Union-Range einzelne Werte auslesen"