VBA Tool
18.09.2013 14:43:17
Marco
Hallo zusammen habe folgendes VBA programm geschrieben siehe unten.
Leider gibt es noch Fehler.
Sinn und zweck ist es zwei unterschiedliche tabellen mit einander zu vergleichen wobei die einzelnen parameter nicht auf der gleichen position liegen.
Darüberhinaus gibt es keinen eindeutigen parameter der bei beiden tabellen gleich ist.
Habe jetzt das problem das die eine tabelle ein Datum das die folgende strucktur besitzt nicht erkennt JJJJMMTT. Dieses soll umgewandelt werden ins folgende TTMMJJJJ.
Kann mir da jemand helfen.
Und zudem schauen ob der Code so in Ordnung ist?
Sub Auswerten()
Sheets("Auswertung").UsedRange.Clear
Strg_EigeneDaten
Strg_OTCExposureStatement
Auswertung
'aufräumen
End Sub
Sub Strg_EigeneDaten()
With Sheets("Eigene Daten")
For iCounter = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
'TYPE ' TRADE_DATE ' MATURITY ' NOTIONAL1 ' CCY1 ' NOTIONAL2 ' CCY2 ' SCD_WP_ID
vTYPE = .Cells(iCounter, 9).Value 'I
vTRADE_DATE = .Cells(iCounter, 10).Value 'J
vMATURITY = .Cells(iCounter, 12).Value 'L
vNotional1 = .Cells(iCounter, 13).Value 'M
vCCY1 = .Cells(iCounter, 14).Value 'N
vNotional2 = .Cells(iCounter, 15).Value 'O
vCCY2 = .Cells(iCounter, 16).Value 'P
vSCD_WP_ID = .Cells(iCounter, 20).Value 'T
vMTM_EUR = Abs(.Cells(iCounter, 19).Value) 'S
StrEigeneDaten = vTRADE_DATE & vNotional1 & vCCY1 & vNotional2 & vCCY2
StrEigeneDatenX = vTYPE & ";" & vTRADE_DATE & ";" & vMATURITY & ";" & vNotional1 & ";" & vCCY1 & _
";" & vNotional2 & ";" & vCCY2 & ";" & vSCD_WP_ID & ";" & vMTM_EUR
.Cells(iCounter, 27) = StrEigeneDaten
.Cells(iCounter, 28) = vMTM_EUR
.Cells(iCounter, 29) = StrEigeneDatenX
Next iCounter
End With
End Sub
Sub Strg_OTCExposureStatement()
With Sheets("OTC Exposure Statement")
For iCounter = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
'Trade Type ' Trade Date ' Maturity Date ' Notional 1 ' Notional 1 Ccy ' Notional 2 ' Notional _
2 Ccy ' Trade Ref
vInstrument = .Cells(iCounter, 43).Value 'B7'
vTradeDate2 = .Cells(iCounter, 7).Value 'G7
vTermination = .Cells(iCounter, 8).Value 'I7
vLeg1Nominal = (.Cells(iCounter, 29).Value) 'ABS(D7)
vLeg1Currency = .Cells(iCounter, 30).Value 'C7
vLeg2Nominal = .Cells(iCounter, 33).Value 'F7
vLeg2Currency = .Cells(iCounter, 34).Value 'E7
vSource = .Cells(iCounter, 2).Value 'A7
'Exposure Amount (Agmt Ccy)
vMTMValue = (.Cells(iCounter, 10).Value) 'ABS(N7)&
StrOTCX = vInstrument & ";" & vTradeDate2 & ";" & vTermination & ";" & vLeg1Nominal & ";" & _
vLeg1Currency & ";" & Leg2Nominal & ";" & vLeg2Currency & ";" & vSource & ";" & vMTMValue
StrOTC = vTradeDate2 & vLeg1Nominal & vLeg1Currency & vLeg2Nominal & vLeg2Currency
.Cells(iCounter, 57) = StrOTC
.Cells(iCounter, 58) = Abs(vMTMValue)
.Cells(iCounter, 59) = StrOTCX
Next iCounter
End With
End Sub
Sub Auswertung()
With Sheets("Auswertung")
.Cells(1, 1) = "TYPE"
.Cells(1, 2) = "TRADE_DATE"
.Cells(1, 3) = "MATURITY"
.Cells(1, 4) = "Notional1"
.Cells(1, 5) = "CCY1"
.Cells(1, 6) = "Notional2"
.Cells(1, 7) = "CCY2"
.Cells(1, 8) = "SCD_WP_ID"
.Cells(1, 9) = "MTM_EUR"
.Cells(1, 10) = "Difference MTM """
End With
ZeilenEigeneDaten = Sheets("Eigene Daten").Cells(Rows.Count, 1).End(xlUp).Row
ZeilenOTCExposureStatement = Sheets("OTC Exposure Statement").Cells(Rows.Count, 1).End(xlUp). _
Row
If ZeilenEigeneDaten - 1 > ZeilenOTCExposureStatement - 1 Then
SheetQuelle = "Eigene Daten": SpalteQ = 27
iCounterQuelle = ZeilenEigeneDaten
ersteDatenzeileQuelle = 2
Sheetziel = "OTC Exposure Statement": Spaltez = 57
iCounterZiel = ZeilenOTCExposureStatement
ersteDatenzeileZiel = 2
Else
SheetQuelle = "OTC Exposure Statement": SpalteQ = 57
iCounterQuelle = ZeilenOTCExposureStatement
ersteDatenzeileQuelle = 2
Sheetziel = "Eigene Daten": Spaltez = 27
iCounterZiel = ZeilenEigeneDaten
ersteDatenzeileZiel = 2
End If
With Sheets(Sheetziel)
For iCounterZ = ersteDatenzeileZiel To iCounterZiel
str1 = .Cells(iCounterZ, Spaltez).Value
With Sheets(SheetQuelle)
For iCounterQ = ersteDatenzeileQuelle To iCounterQuelle
str2 = .Cells(iCounterQ, SpalteQ)
If str1 = str2 Then
With Sheets("Auswertung")
auswertungNächsteZeile = .Cells(Rows.Count, 1).End(xlUp).Row + 1
'.Cells(auswertungNächsteZeile, 1) = str1
.Cells(auswertungNächsteZeile, 1) = Sheets(Sheetziel).Cells(iCounterZ, Spaltez + 2)
.Cells(auswertungNächsteZeile + 1, 1) = Sheets(SheetQuelle).Cells(iCounterQ, SpalteQ + 2)
.Cells(auswertungNächsteZeile + 2, 1) = ";" & ";" & ";" & ";" & ";" & ";" & ";" & ";" & ";" _
& Format((Sheets(Sheetziel).Cells(iCounterZ, Spaltez + 1) - Sheets(SheetQuelle).Cells(iCounterQ, SpalteQ + 1)), ".#")
'.Cells(auswertungNächsteZeile + 1, 2) = Format((Sheets(Sheetziel).Cells(iCounterZ, Spaltez _
+ 1) - Sheets(SheetQuelle).Cells(iCounterQ, SpalteQ + 1)), ".#")
End With
GoTo nächster
End If
nächster:
Next iCounterQ
End With
Next iCounterZ
Call textinSpalten
End With
End Sub
Sub textinSpalten()
With Sheets("Auswertung")
Range("A2:A1000").Select
Selection.TextToColumns Destination:=.Range("A2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True
End With
End Sub
Sub aufräumen()
Sheets("Eigene Daten").Range("AA:AC").Clear
Sheets("OTC Exposure Statement").Range("BE:BG").Clear
End Sub