Hallo liebe VBA Profis,
ich bin seit ein paar Wochen erst dabei VBA für mich zu nutzen und stehe gerade vor einem größeren Problem und würde mich freuen, wenn der ein oder andere Hilfe geben könnte. Ich habe von verschiedenen Finanzindizes (derzeit 75 Zeitreihen, evtl. kommen noch welche hinzu) tägliche Renditen. In einem späteren Schritt möchte ich mit diesen Zeitreihen in MATLAB oder anderen Statistikprogrammen weiterarbeiten und will diese in Excel erstmal nur aufbereiten. Das Problem bei der Aufbereitung ist, dass auf Grund von unterschiedlichen Feiertagen unter den beobachteten Ländern nicht für jeden Index die Schlusspreise zur Verfügung stehen. Ich möchte also nur die Preise, welche für jeden Index verfügbar sind analysieren. Die Daten habe ich aus Bloomberg, also kann ich mein Workbook leider nicht zur Verfügung stellen. Aber es sieht wie folgt aus: In der Spalte A steht beginnend in Zelle A2 das Datum (von 02.01.1995 - 1.11.2016), in der Spalte B für einen Index die dem Datum zugehörigen Preise, in C wieder das Datum und die zugehörigen Preise eines anderen Index in Spalte D ...und so weiter. Hierbei kann es vorkommen, dass zB. der 18.01. in Land A ein börsenfreier Tag war und deshalb für diesen Tag keine Preise zur Verfügung stehen. Nun will ich für alle anderen Länder die Werte des 18.01. löschen, sodass ohne leere Zellen zu bekommen für jeden Index die Zahlen für den 19.01. in der, auf die Reihe nach dem 17.01. folgendenden Zelle stehen.
Ich denke, dass ich hierfür eine Schleife brauche, welche für mich allerdings gerade schwer zu schreiben ist, da diese über mehrere Reihen und Spalten geht. Bisher habe ich:
lastcolumn = Sheets("Data polished").Cells(1, Columns.Count).End(xlToLeft).Column
ndlast = lastcolumn - 1
For j = 1 To 6000
For i = 1 To lastcolumn
For g = 2 To ndlast
If Sheets("Data polished").Range(j, i) = Sheets("Data polished").Range(j, i + g) Then
Sheets("Data polished").Range(j, i + g) = Sheets("Data polished").Range(j, i + g + 2)
Else
End If
Next
Next
Next
Ist aber alles humbug und funktioniert noch nicht. es müsste noch das löschen dazu. Bei mir haperts sowohl an dem Konstrukt als auch an dem Syntax, aber vllt ist der Kopf gerade auch einfach zu, weil ich den ganzen Tag schon mit den Zahlen beschäftigt bin und es sieht morgen alles ganz anders aus. Vielleicht gibt es ja auch einen einfachen Workaround...zB habe ich für den Bivariaten Fall schon einen funktionierenden VBA Code mit dem ich die überflüssigen Werte lösche...allerdings sind dort die zwei Assets in zwei verschiedenen Sheets und ich möchte ungern 75 Worksheets erstellen und jede Zeitreihe mit den anderen abgleichen müssen. Ich wäre für Hilfe sehr dankbar und gebe Bescheid, wenn ich weitergekommen bin und es jemanden interessiert.
Viele Grüße,
Jo
|