Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Formatproblem Excel

Postades av 2010-04-01 15:44:38 - Terry Ekelöf, i forum microsoft office, Tråden har 8 Kommentarer och lästs av 3136 personer

Jag förmodas skicka en excelfil till någon som ska läsa in den maskinellt. Av den anledningen kräver de att alla tal ska vara i formatet "00000000234,48" för 234,48 (kr). Alltid två decimaler och i textformat, dvs man kan inte ange anpassat talformat 00000000000,00 i formateringen (eftersom cellen då "endast" innehåller 234,48, dvs utan alla nollor).

Jag har alltså tusentals siffror i formatet 2546,89 eller 1469,52 osv osv som jag vill göra om till 11 siffror innan kommat och två siffror efter kommat och det ska vara textformat.

Jag blir snart galen... hur gör jag?


Svara

Sv: Formatproblem Excel

Postades av 2010-04-02 16:12:37 - André Claesson

1. Markera rutorna som innehåller talen.
2. Högerklicka och välj Formatera celler.
3. Välj Anpassat och under Typ: skriv in 00000000000,00
4. Nu visas dem som du vill, men det räcker inte eller? I så fall fortsätt på punkt 5.

5. Markera hela kolumnen med dina tal. Klipp ut.
6. Öppna Notepad och Klistra in.
7. Ändra den nu tomma kolumnen i Excel till formatet Text.
8. Kopiera tillbaka från Notepad till Excel.

/André


Svara

Sv:Formatproblem Excel

Postades av 2010-04-06 14:39:45 - Terry Ekelöf

Faktum är att det löste problemet, om än lite meckigt att behöva göra den omvägen varje gång. Det vore ju geschwint om Excel själv kunde klara av det. Om inte annat via VBA-kod eller nåt...


Svara

Sv: Formatproblem Excel

Postades av 2010-04-06 19:41:48 - André Claesson

Ok, du nämnde inte att det skulle göras regelbundet.
Självklart går det att göra med VBA.


Svara

Sv:Formatproblem Excel

Postades av 2010-04-07 19:32:11 - Robert Israelsson

En variant skulle då kunna vara:
<code=vb>Sub CustomFormat()
Dim r As Range
For Each r In Selection
r.NumberFormat = "@"
Dim pos As Integer
Dim intPart As Integer
Dim decPart As Integer
pos = InStr(1, r.Value, ",")
If pos > 0 Then
intPart = Left(r.Value, pos - 1)
decPart = Right(r.Value, Len(r.Value) - pos)
Else
intPart = r.Value
decPart = "00"
End If
r.Value = Right("00000000000" & intPart, 11) & "," & Left$(decPart & "00", 2)
Next
End Sub
</code>
Markera det som ska konverteras och kör sedan vba-koden..


Svara

Sv: Formatproblem Excel

Postades av 2010-04-08 15:13:08 - Terry Ekelöf

Finurligt värre, nu är vi nästan i mål. Går det att ordna så att endast beloppen i kolumn D och E får det formatet, den andra uppgifterna i de kolumnerna ska vara "normalt" textformat (dvs de ska stå exakt som de gör i exemplet fast som ren text).

I kolumn G ska produktkomponenten alltid vara 001 (textformaterat, levereras dock som en etta (1) med talformat 000).

För att krångla till det ytterligare så är det hela kontruerat på det viset att excelark nr 1 hämtar alla värden från ett annat excelblad vilket gör att det i excelark nr 1 endast ligger en massa formler. Jag kopierar hela rasket och klistrar in som värden i ett alldeles nytt excelark (för att bli av med alla formler) och i detta nya excelblad vill jag ha detta rätta format (som sedan sparas som annat filnamn och skickas till den som ska läsa in det hela).

Det vettigaste vore kanske att ha VBA-kod i ett sparat "tomt" ark som alltid får agera mottagare av inklistringen varpå man kör VBA-koden och allt blir riktigt format för att sedan spara?

Så här ser uppgifterna ut: (det ser lite kocko ut när jag klistrar in på detta viset, men kruxet är alltså att datumet 2010 på H-raden i kolumn D och 03 i kolumn E ska vara i just som sådana (de är datumformaterade och blir 40267 om man textformaterar de rutorna), alltså 7039,12 ska bli med nollor före, men inte datumet i samma kolumn på annan rad osv osv.

A B C D E F G H I 10
* Ver.nr Bokf.datum Bokf. År Bokf. Period Namn Personnummer Adress Postnummer Ort
H 1 2010 2010 03 Pelle Pilsner 123456-7891 Nisseviken 88 22233 Finspång
* Ver.nr Konto Debet Kredit Produkt Produktkomponent
P 1 41040 7039,12 0 296 1
P 1 44040 0 0 296 1
P 1 41040 931,32 0 297 1
P 1 44040 0 0 297 1
P 1 42248 0 7039,12 296 1
P 1 42248 0 931,32 297 1
P 1 42258 0 0 296 1
P 1 42258 0 0 297 1
P 1 22265 7039,12 0 296 1
P 1 22265 931,32 0 297 1
P 1 26106 0 2391,13 1
* Ver.nr Bokf.datum Bokf. År Bokf. Period Namn Personnummer Adress Postnummer Ort
H 2 2010 2010 03 Lasse Larsson 123456-7891 Kallegatan 2 18978 Burås
* Ver.nr Konto Debet Kredit Produkt Produktkomponent
P 2 41041 0 0 296 1
P 2 44041 31627,8 0 296 1
P 2 41041 0 0 297 1
P 2 44041 5091,08 0 297 1
P 2 42248 0 0 296 1
P 2 42248 0 0 297 1
P 2 42258 0 31627,8 296 1
P 2 42258 0 5091,08 297 1
P 2 22265 31627,8 0 296 1
P 2 22265 5091,08 0 297 1
P 2 26106 0 11015,66 1


Det blev mycket med det hela... men om någon har lust att förbarma sig så vore jag glad.


Svara

Sv:Formatproblem Excel

Postades av 2010-04-09 16:37:28 - Robert Israelsson

Här finns en tilläggsmodul som är testad i excel 2003: http://dl.dropbox.com/u/2729743/excel/ExportToFile.xla

Här är koden som borde göra det du vill, skapar ett nytt blad med exportdata och ger valet att spara som ny fil, sparar man inte filen ligger bladet kvar för åskådan.

Sub FormatForExport()
Dim i As Integer
Dim shNbr As Integer
Dim sh As Worksheet
Set sh = ActiveSheet
Dim save As Integer
checkForExportSheet
sh.Activate
shNbr = Worksheets.Count
Cells(1, 1).Activate
Do
    For i = 1 To 10
        Select Case Left(ActiveCell.Value, 1)
        Case "P"
            Worksheets(shNbr).Cells(ActiveCell.Row, i).NumberFormat = "@"
            Select Case i
            Case 4, 5: Worksheets(shNbr).Cells(ActiveCell.Row, i).Value = formatCurrency(i - 1)
            Case 7:    Worksheets(shNbr).Cells(ActiveCell.Row, i).Value = formatComponent(i - 1)
            Case Else: Worksheets(shNbr).Cells(ActiveCell.Row, i).Value = ActiveCell.offset(0, i - 1).Value
            End Select
        Case Else: Worksheets(shNbr).Cells(ActiveCell.Row, i).Value = ActiveCell.offset(0, i - 1).Value
        End Select
    Next
ActiveCell.offset(1, 0).Activate
Loop While ActiveCell.offset(1, 0).Value <> ""
save = MsgBox("Spara till fil?", vbYesNo + vbQuestion)
If save = vbYes Then
    Set filesave = CreateObject("MSComDlg.CommonDialog")
    filesave.Filter = "Excel-filer (*.xls)|*.xls"
    filesave.showsave
    Sheets(Worksheets(shNbr).name).Copy
    If filesave.Filename <> "" Then ActiveWorkbook.SaveAs Filename:=filesave.Filename
    ActiveWorkbook.Close savechanges:=False
    Set filesave = Nothing
    Application.DisplayAlerts = False
    Sheets(Worksheets(shNbr).name).Delete
    Application.DisplayAlerts = True
Else
    Worksheets(shNbr).Activate
End If
End Sub
Private Sub checkForExportSheet(Optional shName As String)
Dim sh As Worksheet
Dim name As String
Dim found As Boolean
found = False
If IsMissing(shName) Or shName = "" Then name = "Export"
For Each sh In Worksheets
If sh.name = name Then
found = True
overwriteexisting = MsgBox(name & " finns redan, skriv över arbetsblad?", vbYesNo + vbQuestion)
    If overwriteexisting = vbYes Then
        Application.DisplayAlerts = False
        sh.Delete
        Application.DisplayAlerts = True
        Worksheets.Add(after:=Worksheets(Worksheets.Count)).name = "Export"
    Else
        name = InputBox("Ange namn för exportblad", "Nytt blad")
        checkForExportSheet name
        Worksheets.Add(after:=Worksheets(Worksheets.Count)).name = name
    End If
End If
Next
If found = False Then Worksheets.Add(after:=Worksheets(Worksheets.Count)).name = "Export"
End Sub
Private Function formatCurrency(offset As Integer) As String
    Dim r As Range
    Set r = ActiveCell.offset(0, offset)
    Dim pos As Integer
    Dim intPart As Integer
    Dim decPart As Integer
    pos = InStr(1, r.Value, ",")
    If pos > 0 Then
        intPart = Left(r.Value, pos - 1)
        decPart = Right(r.Value, Len(r.Value) - pos)
    Else
        intPart = r.Value
        decPart = "00"
    End If
    formatCurrency = Right("00000000000" & intPart, 11) & "," & Left$(decPart & "00", 2)
End Function
Private Function formatComponent(offset As Integer) As String
Dim r As Range
    Set r = ActiveCell.offset(0, offset)
    Dim pos As Integer
    Dim intPart As Integer
    pos = InStr(1, r.Value, ",")
    If pos > 0 Then
        intPart = Left(r.Value, pos - 1)
    Else
        intPart = r.Value
    End If
    formatComponent = Right("000" & intPart, 3)
End Function


Svara

Sv: Formatproblem Excel

Postades av 2010-04-15 14:08:04 - Terry Ekelöf

Jag tycker jag har provat alla olika varianter nu (dvs lägga koden på alla möjliga olika sätt). Allt i thisworkbook, allt i det blad som infon hämtas ifrån, delat upp koden lite på gissning (med kompileringsfel som resultat, såklart)

Men det närmaste jag kommer ett "lyckat" resultat är att det skapas ytterligare ett blad som heter "Export", men excel hänger sig (inga felkoder eller frågor på vägen) och jag kan inte göra någonting, inte ens kontrollera vad som finns på export-bladet, eller ens markera en valfri cell.

Jag har cirka 20.000 rader i arket, blir det för ansträngande för excel?


Svara

Sv:Formatproblem Excel

Postades av 2010-04-15 16:42:18 - Robert Israelsson

Har testkört nu med ~40000 poster på bladet .."och det fungerar för mig" ;)

Koden bör fungera som en klump i "ThisWorkbook"

Felmeddelande borde du kunna få men spontant känns det som den fastnar i loopen. sätt en brytpunkt på raden "ActiveCell.offset(1, 0).Activate" (stå på raden och tryck F9) därefter kan du stega dig fram (F8) för att se vart det går på tok.


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 763
27 959
271 761
640
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies