Hejsan Detta är ju faktiskt inte frågan om att förändra talformatet, utan att förändra värdet på cellen. 165 != 165000. Det går inte att göra utan att modifiera innehållet i cellen. Hej Om du tittar på specialformaten så fungerar de på samma sätt som vanliga talformat. Nollor fylls på från vänster. Hej igen Niclas! Det du får göra är helt enkelt att sätta en massa sådana efter varandra. Det blir rysligt fult, och som sagt; jag rekommenderar dig egentligen att göra på annat vis. Borttaget - jag missade att läsa tidigare svar - lat av naturen ;-) Öh? Givet att jag förstår problemet så löser nedanstående procedur problemet ifråga: Jovisst... men han ville tydligen inte ha nåt sånt, det skulle vara ett format. Jag föreslog grunden till en VBA-lösning. öh???nollutfyllnad i excel
Sitter och skapar en "blankett" i excel 2000, där jag skall skriva in tal som i vissa rutor har 6 positioner, och andra rutor 8 positioner.
Om jag skriver exvis 165 skall skall det visas 165000 i rutan, skriver jag 16 skall det stå 160000 skriver jag 1658 blir det 165800
Behöver med andra ord anpassa talformatet.
Kan någon hjälpa mig??
Säkert busenkelt, men jag hittar det inte.
Tack på förhand.
/BenkeSv: nollutfyllnad i excel
Antingen får det ske via VBA, eller så får man skriva in tal i en ruta, och få ut det rätta i en annan. (typ "skriv in i A2, få ut svar i A3").
Med VBA blir det något i stil med
Private Sub Worksheet_Change(ByVal Target As Range)
Target = Target & String(8 - Len(Target), "0")
End Sub
fast med en hejdundrans massa if-satser.
Via formel blir det typ
=B2 & REPT("0";8-LEN(B2))Sv: nollutfyllnad i excel
Tack för svaret, men det bör nog vara form av anpassat talformat. Jag kan ju exvis få ett format som fyller ut nollor före, typ att de 165 blir 000165 (anpassat 00000#)
Det skall även på något sätt att få excel att göra det omvända vilket jag är på jakt efter nu, genom att koppla på en indatamask eller liknande. Så hanterar man ju exvis olika mallar för telefonnr etc.
De siffror jag matar in kommer inte att användas för beräkningsändamål. Det är för en typ "bokföringsorder" som sedan läses in maskinellt.
/BenkeSv: nollutfyllnad i excel
Men visst, du har väl i princip rätt i det du skriver; det går.
Det finns ett sätt, men det är verkligen inte vackert.
Du kan testa med [<10]0"0"; 00
för att se hur det fungerar för två siffror.Sv: nollutfyllnad i excel
Nu är jag på rätt spår, men jag får inte full kläm på det. Det går ju att hantera 2 positioner så här, men mitt bekymmer är att jag i en cell skall fylla i mellan 1 och 6 tecken, men att den alltid skall göra nollutfyllnad så talet/texten blir 6 positioner.
Det är till en bokföringsorder, som skall läsas maskinellt o beroende på kontonivå så kommer det att vara mellan 1-6 positioner i cellen. Tanken är att användaren skall slippa bry sig om att fylla i antalet nollor. SKriver de 165 så är det faktiska kontot 165000, skriver de 16501 så är det verkliga 165010 osv.
/BenkeSv: nollutfyllnad i excel
Tänk om man först skriver 165, och sedan blir det 165000. Sen upptäcker man att det skulle vara 165001. Det naturliga blir ju att ta bort sista siffran och istället lägga till en 1:a, men det går inte, utan man måste lägga till 001. Skulle göra mig frustrerad, iaf...
Typ nåt sånt här:
[<10]0"00"; [<100]00"0"; 000Sv: nollutfyllnad i excel
/CWSv: nollutfyllnad i excel
Är det så svårt att läsa igenom en tråd på fem inlägg?
(Tips: Sist andra inlägget i tråden, Benkes svar på det)Sv: nollutfyllnad i excel
<code>
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:A20")) Is Nothing Then Exit Sub
Application.EnableEvents = False
With Target
.Value = .Value & String(6 - Len(Target.Value), "0")
End With
Application.EnableEvents = True
End Sub
</code>
För att infoga proceduren:
- Högerklicka på det önskade arbetsbladets flik
- Välj kommandot Visa kod
- Klistra in ovanstående kod
- Spara, stäng och öppna arbetsboken igen.
- Testa.
/DSv: nollutfyllnad i excel
Sv: nollutfyllnad i excel
Vart tog mitt svar vägen - Har Pellesoft bllvit hemsökt av spöken???
Här kommer lösningföslaget igen men utan "kött på benet":
<code>
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:A20")) Is Nothing Then Exit Sub
Application.EnableEvents = False
With Target
.Value = .Value & String(6 - Len(Target.Value), "0")
End With
Application.EnableEvents = True
End Sub
</code>
/D