AW: Mit VBA Werte aus Tabellen auf übersicht kopieren
26.03.2013 13:30:35
Tino
Hallo,
hier mal eine Variante.
Ich gehe davon aus,
dass dieses gesuchte Datum auf der ersten Tabelle in A1 und die Bezeichnung in B1 befindet.
Die zu durchsuchenden Bereiche sind in den anderen Tabellen in A (Datum) und B (Bezeichnung).
Option Explicit
Sub Find_Data()
Dim tmpArray(), NewArray()
Dim n&, nn&, nnn&
Dim oWS As Worksheet, rngTmp As Range
Dim SuchDatum As Date, SuchBezeichnung
With Worksheets(1)
SuchDatum = .Cells(1, 1)
SuchBezeichnung = .Cells(1, 2)
For Each oWS In ThisWorkbook.Worksheets
If oWS.Index > 1 Then
With oWS
Set rngTmp = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 2)
tmpArray = rngTmp
nn = nnn + Application.WorksheetFunction.CountIf(rngTmp.Columns(2), SuchBezeichnung)
Redim Preserve NewArray(1 To 2, 1 To nn)
End With
For n = 1 To Ubound(tmpArray)
If Fix(tmpArray(n, 1)) = SuchDatum Then
If tmpArray(n, 2) = SuchBezeichnung Then
nnn = nnn + 1
NewArray(1, nnn) = "=Hyperlink(""#" & rngTmp.Cells(n, 1).Address(0, 0, External:=True) & """,""" & tmpArray(n, 1) & """)"
NewArray(2, nnn) = tmpArray(n, 2)
End If
End If
Next n
Redim Preserve NewArray(1 To 2, 1 To nnn)
End If
Next oWS
.Range("A2:B" & Rows.Count).ClearContents
If nnn > 0 Then
TransPoseArray NewArray
With .Cells(2, 1).Resize(Ubound(NewArray), Ubound(NewArray, 2))
.Value = NewArray
.Sort key1:=.Cells(1, 1), Order1:=xlAscending, Header:=xlNo
End With
End If
End With
End Sub
Sub TransPoseArray(varArray)
Dim n&, nn&, NewAr()
Redim Preserve NewAr(1 To Ubound(varArray, 2), 1 To Ubound(varArray))
For n = 1 To Ubound(varArray)
For nn = 1 To Ubound(varArray, 2)
NewAr(nn, n) = varArray(n, nn)
Next nn
Next n
varArray = NewAr
End Sub
Gruß Tino