Hallo liebe Forenmitglieder,
ich habe noch nicht so viel Erfahrung mit VBA und ein kleines Datenproblem.
Ich habe (ab Spalte B) 900 Spalten und ca. 900 Zeilen. Jede Spalte repräsentiert eine Zeitreihe von Werten, wobei Spalte A Datumsangaben enthält. Das Problem ist nun, dass die Zeitreihen teilweise nicht immer Werte enthalten und es sehr viele Zellen mit "#N/A N/A" gibt.
Das Makro soll nun so lange durch jede Zelle der jeweiligen Spalte gehen bis ein Zahlenwert erreicht ist und mir das dazugehörige Datum in die erste Zeile der jeweiligen Spalte schreiben.
Aufgebaut ist die Tabelle so:
Datum // 1. Wert // 2. Wert//.....usw. (bis Spalte 900)
01.01.2007 //#N/A N/A// #N/A N/A//
02.01.2007// #N/A N/A// 99,87
. . .
. . .
. . .
. . .
(usw)
Wobei die Tabelle in Zeile 2 beginnt. Er soll nun jetzt durch die Spalte " Wert1" gehen, bis ein Zahlenwert auftaucht und mir das dazugehörige Datum (aus Spalte A) in die 1. Zeile (also über "1.Wert") schreiben.Anschließend dann in die 2. Spalte springen. Bei der 2. Spalte müsste (im obigen Fall) also über der Überschrift "2.Wert" korrekterweise 02.01.2007 stehen.
Hoffe das ist soweit verständlich. Ich habe es schon mit einer Do-While Schleife probiert, bekomme es aber nicht ganz hin.
Vielen Dank schon mal.
Hier noch mein Code, an dem ich mich versucht habe.
Sub Filtern()
Dim Bond_Bid As Worksheet
Dim Bond_BidF As Worksheet
Dim DateiName As String
DateiName = Application.ThisWorkbook.Name
Set Bond_Bid = Workbooks(DateiName).Worksheets("Bond_Bid")
Set Bond_BidF = Workbooks(DateiName).Worksheets("Bond_BidF")
Application.Calculation = xlCalculationManual
i = 5
j = 3
Do While Bond_Bid.Cells(i, j) <> "#N/A N/A"
i = i + 1
j = j + 1
Loop
Bond_Bid.Cells(3, 3) = Bond_Bid.Cells(i, j - 1)
Application.Calculation = xlCalculationAutomatic
End Sub
Mir ist klar, dass er hier nur in der ersten Spalte sucht. Das Makro soll jedoch über alle Spalten hinweg gehen.
Zudem: Wie kann ich ihm in folgender Zeile sagen, dass er die Schleife bis zum ersten Zahlenwert laufen lässt?:
Do While Bond_Bid.Cells(i, j) <> "#N/A N/A" -> Er zeigt mir hier einen Fehler an.
Gruß, Soilworker
ich habe noch nicht so viel Erfahrung mit VBA und ein kleines Datenproblem.
Ich habe (ab Spalte B) 900 Spalten und ca. 900 Zeilen. Jede Spalte repräsentiert eine Zeitreihe von Werten, wobei Spalte A Datumsangaben enthält. Das Problem ist nun, dass die Zeitreihen teilweise nicht immer Werte enthalten und es sehr viele Zellen mit "#N/A N/A" gibt.
Das Makro soll nun so lange durch jede Zelle der jeweiligen Spalte gehen bis ein Zahlenwert erreicht ist und mir das dazugehörige Datum in die erste Zeile der jeweiligen Spalte schreiben.
Aufgebaut ist die Tabelle so:
Datum // 1. Wert // 2. Wert//.....usw. (bis Spalte 900)
01.01.2007 //#N/A N/A// #N/A N/A//
02.01.2007// #N/A N/A// 99,87
. . .
. . .
. . .
. . .
(usw)
Wobei die Tabelle in Zeile 2 beginnt. Er soll nun jetzt durch die Spalte " Wert1" gehen, bis ein Zahlenwert auftaucht und mir das dazugehörige Datum (aus Spalte A) in die 1. Zeile (also über "1.Wert") schreiben.Anschließend dann in die 2. Spalte springen. Bei der 2. Spalte müsste (im obigen Fall) also über der Überschrift "2.Wert" korrekterweise 02.01.2007 stehen.
Hoffe das ist soweit verständlich. Ich habe es schon mit einer Do-While Schleife probiert, bekomme es aber nicht ganz hin.
Vielen Dank schon mal.
Hier noch mein Code, an dem ich mich versucht habe.
Sub Filtern()
Dim Bond_Bid As Worksheet
Dim Bond_BidF As Worksheet
Dim DateiName As String
DateiName = Application.ThisWorkbook.Name
Set Bond_Bid = Workbooks(DateiName).Worksheets("Bond_Bid")
Set Bond_BidF = Workbooks(DateiName).Worksheets("Bond_BidF")
Application.Calculation = xlCalculationManual
i = 5
j = 3
Do While Bond_Bid.Cells(i, j) <> "#N/A N/A"
i = i + 1
j = j + 1
Loop
Bond_Bid.Cells(3, 3) = Bond_Bid.Cells(i, j - 1)
Application.Calculation = xlCalculationAutomatic
End Sub
Mir ist klar, dass er hier nur in der ersten Spalte sucht. Das Makro soll jedoch über alle Spalten hinweg gehen.
Zudem: Wie kann ich ihm in folgender Zeile sagen, dass er die Schleife bis zum ersten Zahlenwert laufen lässt?:
Do While Bond_Bid.Cells(i, j) <> "#N/A N/A" -> Er zeigt mir hier einen Fehler an.
Gruß, Soilworker
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Soilworker“ ()