Jump to content

Räkna ut fysisk längd på textsträng?


Go to solution Solved by MH_,

Recommended Posts

Jag antar att om detta går att lösa så är det i Excel.

Jag arbetar med långa textsträngar (i just Excel) och kopierar därifrån och in i CAD. Där finns en begränsning hur lång textsträngen kan vara innan den ramlar utanför en ram.

Antal tecken kan inte ensam utgöra beräkningsgrund då vissa tecken, som I, eller en punkt, ju tar mindre plats än W.

Jag skulle vilja få en sådan text, som är för lång, markerad, med färg eller i en separat kolumn. (jag har texten i H och där är den sammansatt av E & G)

Font/textstorlek i Excel är inte samma som i CAD. I CAD är dock Fonten och texthöjden fast. (I Excel kan den vara godtycklig) Höjden är 2.5 (och där är det millimeter) och fonten som används är arial.ttf normal västerländsk.

Finns det kanske känd data hur inbördes förhållande är vad gäller bredd för Arial?

När jag testar ser jag att jag får plats för

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

vilket jag får till 45 st.

Link to comment
Share on other sites

Korta svaret; du kan inte få fram efterfrågad information, fysisk höjd/bredd-mått på en given textsträng i Excel med dess inbyggda funktioner.

I teorin kan du göra som följande;

Skriv ut en textsträng med enbart samma bokstav, säg 20 tecken i Arial 10pt eller vad som kan motsvara 2,5 mm i höjd, och mät längden och dela med antalet tecken. Detta gör du med såväl versala som gemena tecken samt siffror om det behövs. Du får då en datatabell för varje teckens fysiska mått och det är bredden du vill åt.

Nu kan du göra en formel som adderar de fysiska måtten för varje tecken för den textsträng du vill använda. Detta blir dock inte helt perfekt eftersom i tyopgrafiska sammanhang tillkommer även det som kallas knipning / eng: kerning, och som påverkar textens fysiska storlek.

Läsvärda länkar:

https://onlineprinters.co.uk/magazine/font-sizes/

https://www.researchgate.net/figure/The-Conversions-of-Point-Sizes-to-Millimeters-in-Times-New-Roman-Arial-Helvetica-and_tbl4_365853631

https://en.wikipedia.org/wiki/Kerning

 

Link to comment
Share on other sites

Samma bokstav? Det blir ju avsevärd skillnad i längd om jag skriver 20 st i jämfört med 20 st w

iiiiiiiiiiiiiiiiiiii
wwwwwwwwwwwwwwwwwwww

Mät längden? Var/hur i Excel?

En annan infallsvinkel kanske:

Texten i H är sammansatt av mig och inte av den som skapat dokumentet.

Jag kan se till att typsnittet i H ska vara exempelvis Arial Normal 10 eller motsvarande som lirar med övrig text.

Ett test visar att 45 st A behöver en kolumnbredd som är 58. Jag har även verifierat det med en "riktig" text, ser att tecken utanför cellen även hamnar utanför området i CAD.

Jag skulle då kunna ha ett makro som; markerar H, ändrar till Arial Normal 10, sätter kolumnbredd till 58.

Då kan jag se om texten ryms med lite marginal eller om den går nära cellen.
(Ett test i skrivande stund ger resultatet att jag har fel någonstans, men principen torde vara rätt)

Fint hade då varit om man kunde flagga upp sådan text, ex. med en avvikande färg, ungefär som man kan få röd text för minusvärden.

 

 

Link to comment
Share on other sites

Nej, något knepigt blir det med ovanstående

Calibri 9 är det i det faktiska bladet.

45 st A behöver kolumnbredd 45 i Excel. 45 st A passar precis i CAD

59 st varierande tecken behöver kolumnbredd 50 i Excel. 59 st varierande tecken passar precis i CAD.

Detta med kernel som ställer till det då kanske?

Link to comment
Share on other sites

  • Solution

Kopiera textsträngen till en tom kolumn (bestämd cell) i ett annat blad där du ställt in rätt typsnitt. Be excel autoanpassa kolumnen (som att dubbelklicka på kanten).

Tag kolumnens bredd och kopiera in värdet i huvudbadet.

Loopa järnet

Problem:

  1. Excel ger lite marginal till cellen när du autoanpassar. 
  2. VBA ger bredden i punkter (beroende av upplösning?). Excels VBA har ingen "PointsToCentimeters" funktion så du måste utgå ifrån bredden i punkter. 

Jag antar att du helt enkelt får experimentera för att lista ut vad gränsvärdet är och om marginalen är konstant.

 

Sub tst()
Dim rKällcell As Range
Dim rTestcell As Range

' Antar att du står i den första cellen i kolumnen du vill testa när du börjar (sen loopar vi vidare). Du kan ändra till en fast adress om det är smartare
Set rKällcell = ActiveCell

' Skapa "Testblad" manuellt och sätt typsnittet i kolumn A till det du vill ha (arial 10, whatever). Behöver inte vara samma bok men det är det i mitt exempel
Set rTestcell = Worksheets("TestBlad").Range("A1")

'Loopa igenom varjer rad. Kopiera värdet till A1 i Testblad och be excel autoanpassa.
Do
    rTestcell.Value = rKällcell.Value
    rTestcell.EntireColumn.AutoFit
    
    'Kopiera kolumnbredden i testbladet till cellen ett steg till höger om värdet (anpassa till dina behov)?
    rKällcell.Offset(0, 1) = rTestcell.ColumnWidth
    'Flytta ner källcellen ett steg tills du stöter på en tom cell
    Set rKällcell = rKällcell.Offset(1, 0)
Loop Until rKällcell = ""
rTestcell.value=""
End Sub

 

Ähh testa och se om du får fram något användbart. Sen kan du använda villkorsstyrd formatering eller liknande för att flagga upp celler som har för högt breddvärde. 

  • Thanks 1
Link to comment
Share on other sites

Tack! Det ser ut som jag kan använda denna. 😀

(Egna noteringar)

Jag kan alltså ha godtyckligt bladnamn och godtycklig font där jag klistrar in mina värden. Jag måste ha kolumnen till höger (om texten som ska mätas) tom.

I 'Testblad' ställer jag in font & storlek.

Loop Until rKällcell = "" måste vara Loop Until rKällcell = "STOPP" och jag måste komma ihåg att skriva STOPP på sista raden. (Jag har tomma rader)

Med testade skarpa texter och Arial 10 verkar gränsen vara vid '60' och jag kunde då även hitta en text som jag hade förkortat i onödan, den rymdes visst som den var.

Nu verkar det som att jag kan få flytta de första nio tecknen till ett annat fält varför det förhoppningsvis blir färre strängar där jag måste hitta på en begriplig förkortning.

 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...