PNG32 PNG32 PNG32 PNG32
PNG32
Forum Excel, VBA, VSTO, Exceltips, Excelhj�lp PNG32 drivs av Excelspecialisten    Logga in     English
PNG32
PNG32 PNG32
PNG32

Logga in

PNG32

Du är inte inloggad. Logga in eller registrera dig för att skriva inlägg eller svara på inlägg.

För frågor om forumet, kontakta oss på webmaster@excelforum.se

PNG32 PNG32
PNG32 PNG32
PNG32

Excelforum

PNG32

 
ForumForumDiskussionerDiskussionerVBAVBAta bort ett mellanrum i ett tal...ta bort ett mellanrum i ett tal...
Föregående Föregående
 
Nästa Nästa
Nytt inlägg
 2020-02-04 13:55
 

 Hej, jag har belopp som jag importerat från mitt bokföringsprogram, jag förstår att jag fått in en sträng med beloppet och att jag behöver ta bort mellanrummet i beloppet för att sen kunna ändra det till ett riktigt belopp med siffror komma och decimaler. Det kan se ut som 123 456,78

Jag har kommit så långt att jag analyserat var i talet mellanrummet finns men hur får jag bort det ??

 

Dim I As Integer

Dim FörstaHalvan As Double

Dim AndraHalvan As Double

Sub OmvandlaTillBelopp()

    For I = 8 To 62

        Cells(I, 2).Select

        For J = 1 To Len(Cells(I, 2))

            Temp = Mid(Cells(I, 2), J, 1)

            If Temp = " " Then

                'Nu ska mellanrummet tas bort...

                FörstaHalvan = Left(Cells(I, 2), J - 1)

                AndraHalvan = Right(Cells(I, 2) - J)

                Cells(I, 2) = FörstaHalvan & AndraHalvan

                Exit For

            End If

        Next J

        Cells(I, 2) = Val(Cells(I, 2))

    Next I

End Sub

 
Nytt inlägg
 2020-02-04 16:46
 
 Ändrad av anonymous  på 2020-02-04 17:56:43

 Krånglar du inte till det i onödan?

Sök efter mellanslag och byt ut mot ingenting:

     Cells(I, 2).Value = Replace(Cells(I, 2).value, " ", "")

 

En ännu enklare variant är att "låna" excels funktion TALVÄRDE (kolla i excel hur det fungerar). Du kör helt enkelt "WorksheetFunction.NumberValue"

Om vi mellanlandar i temp

     Temp = Cells(I, 2).Value

så kan vi omvandlar allt på  en rad:

     Cells(I, 2).Value = WorksheetFunction.NumberValue(Temp, ",", " ")

Det första argumentet är indata (temp). Det andra argumentet berättar att komma (,) är decimaltecknet och det tredje att mellanslag (" ") är tusentalsavgränsare.

 Jag skulle desutom börja med excels STÄDA och RENSA bara för att ta bort eventuellt skräp och kankse en IF-sats för att kolla så att cellen inte är ett tal readan. Men egentligen skulle du klara dig med

Cells(I, 2).Value = WorksheetFunction.NumberValue(Cells(I, 2).Value , ".", " ")

 

Sub OmvandlaTillBelopp()

Dim AktuellCell As Range

For Each AktuellCell In Range("B9", "B62").Cells

    Temp = AktuellCell.Value

    If Not IsNumeric(Temp) Then

        Temp = WorksheetFunction.Clean(Temp)

        Temp = WorksheetFunction.Trim(Temp)

        AktuellCell.Value = WorksheetFunction.NumberValue(Temp, ",", " ")

    End If

Next AktuellCell

End Sub

 

För din egen framtids skull. Kolla in Power Query. Det är excels hjälpmedel just för att importera och städa upp data från andra program. Du kan både "spela in" frågor och redigera frågorna i det förenklade frågespråket M

Äldre excel:

https://support.office.com/sv-se/article/komma-igång-med-power-query-7104fbee-9e62-4cb9-a02e-5bfb1a6c536a

Nyare

https://support.office.com/sv-se/article/hämta-transformation-i-excel-881c63c6-37c5-4ca2-b616-59e18d75b4de

Nytt inlägg
 2020-02-14 08:29
 
 Ändrad av Christian  på 2020-02-14 09:33:02
Hej hej

Om det nu bara är mellanslag som du fått in så räcker det med koden nedan:

Sub chngeAll()

Dim mCell As Range

For Each mCell In Selection
mCell = CDbl(mCell)
Next mCell

End Sub

CDbl typar om olika datatyper till Double, den hanterar utan problem mellanslag, skulle du få problem ändå så är det troligtvis något annat skräptecken inblandat som den inte lyckas hantera.
Koden kräver att du först markerar alla värden som ska göras om, därefter kör du makrot.

Mvh
Christian
Föregående Föregående
 
Nästa Nästa
ForumForumDiskussionerDiskussionerVBAVBAta bort ett mellanrum i ett tal...ta bort ett mellanrum i ett tal...

PNG32 PNG32
Excelforum drivs av Excelspecialisten som bedriver utbildning i Excel och VBA, tillhandahåller support och hjälp med Excel, utvecklar program i Excel. Är ni i behov av en konsult inom Excel, VBA eller VSTO, eller söker en excelkurs, kontakta oss.
Copyright 2013 ExcelSpecialisten XLS AB   Användarvillkor  Personliga uppgifter