Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1328to1332
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Tool

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

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Tool
19.09.2013 02:06:52
fcs
Hallo Marco,
Darüberhinaus gibt es keinen eindeutigen parameter der bei beiden tabellen gleich ist.
Wenn so ein Paramter fehlt, dann ist ein Vergleich nicht möglich.
Kann man eventuell einen eindeutigen Parameter erzeugen, wenn man die Inhalte aus 2 oder mehr Spalten zusammenfügt?
Beispiel für Datumsumwandlung:
Sub aaTest()
Dim Zeile As Long, Spalte As Long, datDatum As Variant, strDatum As String
'Beispiel für Datumumwandlung
With ActiveSheet
Spalte = 1 'Spalte A
For Zeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
With .Cells(Zeile, Spalte) 'Zelle mit Datum im Format JJJJMMTT
datDatum = fncConvertJJJJMMTT_A(.Text)
If IsDate(datDatum) Then
strDatum = Format(datDatum, "DD.MM.YYYY")
Else
strDatum = "kein Datum"
End If
.Offset(0, 1).Value = datDatum
.Offset(0, 2).Value = strDatum
End With
Next
End With
End Sub
Function fncConvertJJJJMMTT_A(strText) As Variant
'Konvertiert Ziffernfolge JJJJMMTT in ein Datum
Dim datDatum As Date, strDatumText As String
fncConvertJJJJMMTT_A = strText
If IsNumeric(strText) And Len(strText) = 8 Then
strDatumText = Mid(strText, 1, 4) & "-" & Mid(strText, 5, 2) & "-" & Mid(strText, 7, 2)
If IsDate(strDatumText) Then
fncConvertJJJJMMTT_A = CDate(strDatumText)
End If
End If
End Function
Gruß
Franz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige