Jag har ett excelark där i en av kolumnerna vill jag ha en indatamask eller vba-kod som kollar om alla ifylla rader i kolumn A ser ut liknande som detta exempel:
89 45 455 8 565-5
Mellanrum på vissa ställen, ett streck precis innan sista talet, och endast siffror.
Hur gör jag detta på bästa sätt?
Få se om jag missförstår dig rätt. Du vill alltså ha det inmatat som en textsträng med det där formatet?
Då TROR jag att du måste använda dig av verifiering och kolla varenda mellanslag.
Markera det område du vill begränsa
Menyn Data->Verifiering
Ändra kriterierutan till "anpassat" och skriv in en formel i stil med
=OCH(
ÄRTAL(1*(VÄNSTER(A1;2)&EXTEXT(A1;4;2)&EXTEXT(A1;7;3)&EXTEXT(A1;11;1)&EXTEXT(A1;13;3)&EXTEXT(A1;17;1)));
LÄNGD(A1)=17;
EXTEXT(A1;16;1)="-";
EXTEXT(A1;3;1)=" ";EXTEXT(A1;6;1)=" ";EXTEXT(A1;10;1)=" ";EXTEXT(A1;12;1)=" "
)
eller på en rad om det är enklare att kopiera
=OCH(ÄRTAL(1*(VÄNSTER(A1;2)&EXTEXT(A1;4;2)&EXTEXT(A1;7;3)&EXTEXT(A1;11;1)&EXTEXT(A1;13;3)&EXTEXT(A1;17;1)));LÄNGD(A1)=17;EXTEXT(A1;16;1)="-";EXTEXT(A1;3;1)=" ";EXTEXT(A1;6;1)=" ";EXTEXT(A1;10;1)=" ";EXTEXT(A1;12;1)=" ")
Se till att skriva ett vettigt felmeddelande
Ett annat alternativ är att tillåta att folk faktiskt matar in det som ett tal, dvs
894545585655
Och sedan anger du en "talformatkod" för de aktuella cellerna (format->celler->Tal->anpassat), typ:
00" "00" "000" "0" "000-0
Dvs talet blir faktiskt inmatat, och lagrat, som ett tal, men utseendet blir som du vill.
Då kanske det räcker med att kolla om talet har rätt längd?
[<111111111111]"För kort";[>999999999999]"För långt";00" "00" "000" "0" "000-0
Behöver du använda det som text kan du alltid köra en formel i stil med:
=TEXT(A1;"00 00 000 0 000-0")
Tack för svaret! Ska testa de olika testen och kanske återkommer vid behov.
Räckte bra med en kombination av validation och formatering av celler (för syns skull). Tack ska du ha! :)