[GELÖST] Zellenformate lassen sich nicht matchen?

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Entchen19
*
Beiträge: 18
Registriert: Do, 15.12.2011 22:10

[GELÖST] Zellenformate lassen sich nicht matchen?

Beitrag von Entchen19 »

Hallo zusammen,

ich habe ein ziemlich kurioses Problem und auch noch fünf Stunden bin ich der Lösung keinen Schritt weiter ...

Ich lese Daten aus der Zwischenablage in Calc ein.

Die Eingabedaten sehen so aus:
27.08.2010 04:48:01,C,36,5
27.08.2010 05:03:01,C,36,5
27.08.2010 05:18:01,C,36,4
27.08.2010 05:33:01,C,36,25
27.08.2010 05:48:01,C,36,3
27.08.2010 06:03:01,C,36,3
27.08.2010 06:18:01,C,36,3
Der Code zum Einlesen:

Code: Alles auswählen

    oClipboardHandle = createUnoService("com.sun.star.datatransfer.clipboard.SystemClipboard")
    oData = createUnoService("com.sun.star.datatransfer.XTransferable")
    oData = oClipboardHandle.getContents()   

    oDataTypSeq = oData.getTransferDataFlavors()   'Array aller Inhalte

    sWerte = oData.getTransferData(oDataTypSeq(0))
    sWerte = Replace(sWerte, ",C,", " ")
    sWerte = Replace(sWerte, " ", chr(9))

    vZeilen = Split(sWerte, chr(13))
    j = iSchluss + 1
    
    For i = 0 To (UBound(vZeilen) - 1)
        
        vTeile = Split(Trim(vZeilen(i)), chr(9))
        If UBound(vTeile) >= 2 Then
            oSheet.getCellRangeByName("V" & j).FormulaLocal = Format(vTeile(0), "mm.dd.yyyy")
            oSheet.getCellRangeByName("W" & j).FormulaLocal = vTeile(1)
            oSheet.getCellRangeByName("X" & j).FormulaLocal = CDbl(vTeile(2))
            j = j + 1
        End If
           
    Next

Soweit, so gut.

Jetzt bekommt es Calc aber hin, das Datum beim ersten Eintrag anders zu formatieren, als bei den anderen, d.h. beim ersten Eintrag ist es noch eine Zahl, die nur anders angezeigt wird. Bei den nächsten ist es jedoch wirklich das Datum als Text:

Zur Veranschaulichung, so sieht das dann aus, wenn man die Formatierung rausnimmt:
Zelle S2: 40417
Zelle S3: 27.08.2010
An sich könnte mir das ja egal sein, aber ich möchte aus dem ganzen Wust, den ich da einlese, die Duplikate rausfiltern.
Und hier rafft der Filter das nicht, weil ja in den Zellen irgendwie schon etwas anderes drinsteht.

Ich habe jetzt schon alles versucht:
Die Werte nicht in:

Code: Alles auswählen

oSheet.getCellRangeByName("V" & j).FormulaLocal = Format(vTeile(0), "mm.dd.yyyy")
zu schreiben, sondern in .value, .string, .formula
--> keine Verbesserung

Dann wollte ich eben nach dem Filter prüfen, ob Zelle S1 und S2 den gleichen Inhalt haben und dann eine rauslöschen, denn es betrifft nur dieses erste Duplikat ...

Aber hier bekomme ich den Vergleich einfach nicht hin, ich schaffe es nicht, die beiden Zellen in eine Variable auf das gleiche Format zu matchen.
cDate Umwandlung klappt bei Zelle S3 nicht, wenn beides strings sind, meint er, es ist nicht gleich.

Ich weiß inzwischen wirklich nicht mehr weiter ...
Habt ihr Ideen dazu?

Ich hänge euch einmal die Tabelle an, vielleicht habt ihr ja eine Idee?
Die txt Datei mit den Eingabedateien durfte ich nicht anhänge, daher hier noch en paar davon:
27.08.2010 04:48:01,C,36,5
27.08.2010 05:03:01,C,36,5
27.08.2010 05:18:01,C,36,4
27.08.2010 05:33:01,C,36,25
27.08.2010 05:48:01,C,36,3
27.08.2010 06:03:01,C,36,3
27.08.2010 06:18:01,C,36,3
27.08.2010 06:33:01,C,36,3
27.08.2010 06:48:01,C,36,3
27.08.2010 07:03:01,C,36,3
27.08.2010 07:18:01,C,36,3
27.08.2010 07:33:01,C,36,35
27.08.2010 07:48:01,C,36,35
27.08.2010 08:03:01,C,36,4
27.08.2010 08:18:01,C,36,5
27.08.2010 08:33:01,C,36,5
27.08.2010 08:48:01,C,36,5
27.08.2010 09:03:01,C,36,4
27.08.2010 09:18:01,C,36,4
27.08.2010 09:33:01,C,36,5
27.08.2010 09:48:01,C,36,5
27.08.2010 10:03:01,C,36,55
27.08.2010 10:18:01,C,36,6
27.08.2010 10:33:01,C,36,65
31.08.2010 01:03:01,C,36,9
31.08.2010 01:18:01,C,36,85
31.08.2010 01:33:01,C,36,8
31.08.2010 01:48:01,C,36,75
31.08.2010 02:03:01,C,36,6
31.08.2010 02:18:01,C,36,55
31.08.2010 02:33:01,C,36,55
31.08.2010 02:48:01,C,36,55
31.08.2010 03:03:01,C,36,6
31.08.2010 03:18:01,C,36,6
31.08.2010 03:33:01,C,36,6
31.08.2010 03:48:01,C,36,6
31.08.2010 04:03:01,C,36,6
31.08.2010 04:18:01,C,36,6
31.08.2010 04:33:01,C,36,55
LG
Entchen, die momentan über dem Basic ziemlich gefrustet sitzt ...
Zuletzt geändert von Entchen19 am Sa, 24.12.2011 10:09, insgesamt 1-mal geändert.
Entchen19
*
Beiträge: 18
Registriert: Do, 15.12.2011 22:10

Re: Zellenformate lassen sich nicht matchen?

Beitrag von Entchen19 »

Hat keiner eine Idee, was hier falsch sein könnte :-?

Ich bin immer noch am rätseln, leider :(

Mir würde es schon reichen, wenn ich die beiden Zellen vergleichen könnte, um eine dann rauszuschmeißen, das muss doch gehen :evil:
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Zellenformate lassen sich nicht matchen?

Beitrag von F3K Total »

Hi,
das funzt bei mir:

Code: Alles auswählen

Sub paste_Clipboard

    osheet=Thiscomponent.sheets(0)
    oClipboardHandle = createUnoService("com.sun.star.datatransfer.clipboard.SystemClipboard")
    oData = createUnoService("com.sun.star.datatransfer.XTransferable")
    oData = oClipboardHandle.getContents()   

    oDataTypSeq = oData.getTransferDataFlavors()   'Array aller Inhalte
    

    sWerte = oData.getTransferData(oDataTypSeq(0))
    sWerte = Replace(sWerte, ",C,", " ")
    sWerte = Replace(sWerte, " ", chr(9))

    vZeilen = Split(sWerte, chr(13))
    for i=0 to ubound(vZeilen())
    vZeilen(i)=Replace(vZeilen(i),chr(10),"")'hier war noch ein Zeichen zuviel
    next i
    j = 1'iSchluss + 1
   
    For i = 0 To (UBound(vZeilen) - 1)
       
        vTeile = Split(Trim(vZeilen(i)), chr(9))
        If UBound(vTeile) >= 2 Then
            oSheet.getCellRangeByName("V" & j).FormulaLocal = vTeile(0)'Formatierung entfernt
            oSheet.getCellRangeByName("W" & j).FormulaLocal = vTeile(1)
            oSheet.getCellRangeByName("X" & j).FormulaLocal = CDbl(vTeile(2))
            j = j + 1
        End If
    Next
End Sub
Gruß R
Entchen19
*
Beiträge: 18
Registriert: Do, 15.12.2011 22:10

Re: Zellenformate lassen sich nicht matchen?

Beitrag von Entchen19 »

Super, das funktioniert, lieben Dank für das Weihnachtsgeschenk :)
Antworten