Runden auf 2 Nachkommestellen - Exportierte Excel Datei

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von vbneuling60.

    Runden auf 2 Nachkommestellen - Exportierte Excel Datei

    Hallo liebe Boardies,

    ich habe folgendes Problem. Ich exportiere eine .xlsx Datei. In dieser Datei werden die Zahlen in den jeweiligen Zellen in einer For Schleife eingetragen.

    VB.NET-Quellcode

    1. Dim excel_sheet4 As Microsoft.Office.Interop.Excel.Worksheet
    2. .
    3. .
    4. .
    5. If chartStacked.Series(k).Points(i).YValues(0) <> 0 Then 'Wenn YValue nicht 0
    6. excel_sheet4.Cells(spalte)(zeile + i).value = chartStacked.Series(k).Points(i).YValues 'Y Value in aktuellen Position eintragen
    7. End If


    Hierbei tauchen dann Zahlen auf wie: 55,139912309123 (mit 12 Nachkommestellen auf)

    Ich möchte aber dass Zahlen wie: 55,14 (also mit 2 Nachkommestellen) auftauchen. Versucht habe ich dass dann mit folgender Code

    VB.NET-Quellcode

    1. If chartStacked.Series(k).Points(i).YValues(0) <> 0 Then 'Wenn YValue nicht 0
    2. excel_sheet4.Cells(spalte)(zeile + i).value =
    3. Math.Round(chartStacked.Series(k).Points(i).YValues,2) 'Y Value in aktuellen Position
    4. eintragen
    5. End If


    Hier taucht dann aber folgende Fehlermeldung auf:

    VB.NET-Quellcode

    1. Fehler 39 Fehler bei der Überladungsauflösung, da keine zugreifbare "Round" mit diesen Argumenten aufgerufen werden kann:
    2. "Public Shared Function Round(d As Decimal, mode As System.MidpointRounding) As Decimal": Der Wert vom Typ "1-dimensionales Array von Double" kann nicht in "Decimal" konvertiert werden.
    3. "Public Shared Function Round(d As Decimal, decimals As Integer) As Decimal": Der Wert vom Typ "1-dimensionales Array von Double" kann nicht in "Decimal" konvertiert werden.
    4. "Public Shared Function Round(value As Double, mode As System.MidpointRounding) As Double": Der Wert vom Typ "1-dimensionales Array von Double" kann nicht in "Double" konvertiert werden.
    5. "Public Shared Function Round(value As Double, digits As Integer) As Double": Der Wert vom Typ "1-dimensionales Array von Double" kann nicht in "Double" konvertiert werden. C:\Users\...


    Hat jemand eine Idee, wie ich das Problem lösen könnte?
    Also das:

    VB.NET-Quellcode

    1. chartStacked.Series(k).Points(i).YValues


    Ist ein Array. Wenn du einen expliziten Wert willst, dann wäre das

    VB.NET-Quellcode

    1. chartStacked.Series(k).Points(i).YValues(0) 'erster Wert im Array


    Dann klappts vermutlich auch mit'm round

    LG
    Das ist meine Signatur und sie wird wunderbar sein!

    vbneuling60 schrieb:

    YValues
    ist ein Array.
    Zieh Dir jede Zahl einzeln in eine separate Variable, caste sie ggf. und runde sie da.
    Da kannst Du alles per Haltepunkt und Debug untersuchen und geraderücken. Gugst Du hier.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!