Avatar billede miqe Nybegynder
08. september 2009 - 11:42 Der er 8 kommentarer og
1 løsning

Formater som IP adresse

Hej Eksperter

Jeg er efterhånden ved at få grå hår i hovedet af at forsøge at formatere celler som IP adresser.

Med de metoder jeg har fundet er der altid IP adresser, der kan falde udenfor rammerne for min formatering, så disse får en markør om at disse er tal formateret som tekst.

Denne markør er mildest talt irriterende, når det gælder IP adresser, men brugbar ved andre typer af "nummer som tekst" fejl.

Har bl.a. forsøgt mig med med formaterne
###"."###"."###"."###
og
#"."#"."#"."#
Disse er dog ikke dækkende for alle IP muligheder.
En adresse som f.eks. 10.255.123.123 vil falde ud, da Excel tror der er tale om et nummer i 10 mia. størrelsen.

Ønsker ikke en VBA løsning og ønsker ikke en løsning, der kræver foranstillede nuller (000"."000"."000"."000)

Ønsker med andre ord et bulletprof custom format der dækker vilkårlige IP adresser i hele rangen fra 0.0.0.0 til 255.255.255.255

Håber at der er en eller anden der har fundet guldhornene, da M$ mod forventning ikke har implementeret dette som et standard format i Excel 2007

/Miqe
Avatar billede jkrons Professor
08. september 2009 - 11:59 #1
Jeg tror ikke, at det er muligt at lave et sådant format - hvilket nok er årsag til, at MS ikke har gjort det.

Indtaster du fx 252122211 kan Excel på ingen måde vide, om der står 252.12.2.211, 25.212.2.211, 252.1.222.11 eller noget helt tredje.
Avatar billede miqe Nybegynder
08. september 2009 - 12:57 #2
Kender ikke til nogen der skriver IP adresser i decimalform uden de mellemliggende punkter.

Så snart der er mindre end 3 cifre i 2., 3. 4. rude vil Excel automatisk forstå at det ikke er et tal og behandler det som tekst.

Er der 3 cifre i de nævnte 3 ruder eller alle 4, forstår Excel det som et tal, der er formateret som tekst.
Kan delvist forstå denne fortolkning, da man også kan skrive tal på denne form.

Det er her jeg gerne vil kunne bede Excel om at fortolke det indtastede i cellen som en IP adresse, der består af 4 numre mellem 0-255 med mellemliggende (tekst)punkter.

Er cellen således formateret med ###"."###"."###"."### burde en indtastning i cellen formateres med dette som udgangspunkt.
Dette sker dog reelt ikke, hvormed man får fejlbesked om at "tallet" er formateret som tekst.

En anden fordel, hvis M$ lavede et egentligt IP format, er at man ville kunne sortere korrekt i en kolonne med IP adresser.

Prøver dog alligevel lykken her, da der jo kan være en eller anden der har fundet Guldhornene :-)

Vil også være interesseret i evt. plugin (ikke macro), der kan implementere et IP adresse format.
Avatar billede jkrons Professor
08. september 2009 - 14:19 #3
Excel kan ikke fortolke tal, hvor der er andet end tre cifre mellem punktummerne som tal. Ellers vil det blive formateret som tekst.

MS kunne muligvis godt opfinde et IP adresseformat, som var et talformat, men det kunne komme i konflikt med andre talformater i det tilfæde, at der faktisk ER tre cifre i hver gruppe.

Desuden er formaterne jo kun "udseende" ikke indhold. Så hvis man opfandt et format, der kunne "vise" 1.234.22.89 som tal, ville kun talværdien blive gemt og dermed ville sorteringen alligevel blive forkert.

Så vidt jeg kan se, er det du ønsker en datatype, som gemmes som tal, men sorteres fra venstre mod højre i intervaller af tre - ikke efter talværdien.
Avatar billede miqe Nybegynder
08. september 2009 - 21:56 #4
Jeg er helt enig i at det er en IP datatype, der er det mest ønskelige, hvilket et evt. plugin muligvis kunne løse (hvis der er nogen der har lavet sådan et).

At formaterne er udseende, og ikke indhold, havde jeg så småt efterhånden fået en anelse om.
Dette var mellem linjerne også en af de anelser jeg ønskede at få besvaret.

Hvis du eller nogen anden kender til et plugin, der kan implementere en IP datatype i Excel, vil det være meget interessant.

Du er velkommen til at lægge et svar jkrons, da jeg fik besvaret en del af mit spørgsmål.
Avatar billede jkrons Professor
09. september 2009 - 09:55 #5
Jeg kender desværre ikke et sådant addd-in. Jeg har en fornemmelse af, at det enten er vanskeligt at lave - eller at behovet er meget lille. Ellers er jeg sikker på at MS eller andre allerede havde gjort det.
Avatar billede jkrons Professor
09. september 2009 - 10:09 #6
Hvis det primært handler om sortering af adresserne, kan du evt bruge denne lille omvej.

Skriv dine Indsæt en tom kolonne til venstre for denm du har dine IP adresser i og indsæt fire tommer til højre for, hvis der ikke er tomt i forvejen.

Marker kolonnen med IP adresser og brug Data .Tekst til kolonner med punktum som afgrænser til at opdele adressen i de fire nye kolonner. I Den nye kolonne til venstre indsætter du en formel (forudsætter at IP adresserne oprindeligt stod i A nu i B efter tiføjelsen af den ekstra kolonne og de nye tomme er C, D, og E:

Formlen er =B1&"."&C1&"."&D1&"."&E1

Sorter nu sit område efter kolonne F, derefter efter kolonne E, så efter kolonne D og til sidst efter kolonne C. Dette kunne nu gøres med en makro, hvis det er forbesværligt.

Under alle omstændigheder vil du nu have en A-kolonne, hvor IP adresserne er sorterede.

Hele sorteringen kunne sikkert godt håndteres i en makro, men det har jeg desværre ikke tid til at se på lige pt.
Avatar billede miqe Nybegynder
09. september 2009 - 11:21 #7
Selve sorteringen har jeg allerede gjort med den metode som du beskriver.
Det er dog en omstændig metode og jeg vil helst undgå makroer

Mht. datatype kan jeg ved nærmere eftertanke godt se at mange formater bare bliver gemt som deres heltal's ekvivalent.
Dit eksempel længere oppe (252122211), burde dog kun kunne fortolkes på én måde, hvis man opretter en egentlig datatype.
Et hvert decimal tal vil under alle omstændigheder gemmes i Excels interne variable som hexadecimal.
252122211 -> 0xF071463
Et IP format burde dermed vise talværdien 252122211 som 15.7.20.99

Problematikken er så i fortolkningen af tal, der tastes med punkter, når de sidste 3 ruder eller alle 4 er på 3 cifre.
Som det er nu vil Excel fortolke det som heltal og gemme dem uden punkterne så vidt jeg kan forstå eller gemme dem som tekst og brokke sig over at det er tal, der er gemt som tekst.
Avatar billede jkrons Professor
10. september 2009 - 17:34 #8
Du har helt ret i det med at punktummerne fjernes ved 4 x 3 cifre.

Jeg kan godt se, hvorfor du mener. at 252122211 skal oversættes til 15.7.20.99, men man vil næppe indtaste en IP adresse som den decimale værdi af en hexadecimal fortolking.
Avatar billede miqe Nybegynder
11. september 2009 - 01:09 #9
Man vil normalt indtaste IP adressen med punkterne og ikke den direkte talværdig. Helt enig!
For datoer taster man også normalt inkl. ":", selvom disse også bare bliver lagret som en heltalsværdi, så vidt jeg har forstået.
Heltalet vil igen under overfladen, som alle andre heltal, blive behandlet i dens hexadeimale form.

Som jeg ser det er der ikke den store forskel på IP'er og Datoer, bortset fra at langt over halvdelen af IP addresserne i deres tekstuelle form, vil kunne fortolkes som tal i mia. størrelsen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester