< návrat zpět

MS Excel


Téma: Formát buněk rss

Zaslal/a 4.8.2015 18:28

lajosZdravím přátelé,
jak by měl vypadat formát bunky,aby výsledkem bylo číslo ve formátu IP adresy?Jde mi o to,že na formuláři k vyhledané poslední IP adrese potřebuji přičíst "jedna" a toto dále uložit.Poradí někdo?
Děkuji za případné reakce.

Zaslat odpověď >

#026110
elninoslov
Formát netuším, ale posledné číslo IP zistíte vzorcom takto:
=RIGHT(IF(LEFT(RIGHT(A1;4);1)=".";RIGHT(A1;3);RIGHT(A1;4));LEN(IF(LEFT(RIGHT(A1;4);1)=".";RIGHT(A1;3);RIGHT(A1;4)))-IFERROR(FIND(".";IF(LEFT(RIGHT(A1;4);1)=".";RIGHT(A1;3);RIGHT(A1;4)));0))
Potom si na koniec vzorca dajte +1. Ale čo potom ak dôjdete na číslo 255 ? Pri IP adresách sa nemôžete "preliať" zo 4 úrovne a prirátať 1-ku k 3. úrovni, a 4. počítať od 0. To tak nejde, to by bola už úplne iná podsieť.

EIDT:
=LEFT(A1;LEN(A1)-LEN(RIGHT(IF(LEFT(RIGHT(A1;4);1)=".";RIGHT(A1;3);RIGHT(A1;4));LEN(IF(LEFT(RIGHT(A1;4);1)=".";RIGHT(A1;3);RIGHT(A1;4)))-IFERROR(FIND(".";IF(LEFT(RIGHT(A1;4);1)=".";RIGHT(A1;3);RIGHT(A1;4)));0))))&RIGHT(IF(LEFT(RIGHT(A1;4);1)=".";RIGHT(A1;3);RIGHT(A1;4));LEN(IF(LEFT(RIGHT(A1;4);1)=".";RIGHT(A1;3);RIGHT(A1;4)))-IFERROR(FIND(".";IF(LEFT(RIGHT(A1;4);1)=".";RIGHT(A1;3);RIGHT(A1;4)));0))+1

alebo oveľa kratšia verzia :
=LEFT(A1;FIND(".";A1;1+FIND(".";A1;1+FIND(".";A1))))&RIGHT(A1;LEN(A1)-FIND(".";A1;1+FIND(".";A1;1+FIND(".";A1))))+1

EDIT2: A ešte ma napadlo urobiť Vám extrakciu každého čísla:
1. úroveň
=LEFT(A1;FIND(".";A1)-1)
2. úroveň
=MID(A1;FIND(".";A1)+1;FIND(".";A1;FIND(".";A1)+1)-1-FIND(".";A1))
3. úroveň
=MID(A1;FIND(".";A1;FIND(".";A1)+1)+1;FIND(".";A1;FIND(".";A1;FIND(".";A1)+1)+1)-1-FIND(".";A1;FIND(".";A1)+1))
4. úroveň
=RIGHT(A1;LEN(A1)-FIND(".";A1;1+FIND(".";A1;1+FIND(".";A1))))citovat
icon #026115
eLCHa
Hehe - mno, mám rád když se po ránu mohu rozehřát něčím, co zapojí mé závity.
Formátem to nelze, protože pokud máte zapsánu IP adresu ve formátu "x.x.x.x", tak to není číslo, ale text a ten nenaformátujete. A pokud ho máte decimálně, tak to zase formátem do tohoto tvaru nedostanete.
Takže: bez ohledu na význam jednotlivých částí - dotaz zněl k IP adrese přičíst 1

1. Musíte převést IP (v buňce A1) do decimálního tvaru - třeba takto (B1)=HEX2DEC(DEC2HEX(ZLEVA(A1;NAJÍT(".";A1)-1)/1;2)&DEC2HEX(ČÁST(A1;NAJÍT(".";A1)+1;NAJÍT("|";DOSADIT(A1;".";"|";2))-NAJÍT(".";A1)-1);2)&DEC2HEX(ČÁST(A1;NAJÍT("|";DOSADIT(A1;".";"|";2))+1;NAJÍT("|";DOSADIT(A1;".";"|";3))-NAJÍT("|";DOSADIT(A1;".";"|";2))-1);2)&DEC2HEX(ČÁST(A1;NAJÍT("|";DOSADIT(A1;".";"|";3))+1;3);2))2. Pak můžete přičíst 1 a převést zpět do tvaru adresy - třeba takto (C1)=HEX2DEC(ZLEVA(DEC2HEX(B1+1;8);2))&"."&HEX2DEC(ČÁST(DEC2HEX(B1+1;8);3;2))&"."&HEX2DEC(ČÁST(DEC2HEX(B1+1;8);5;2))&"."&HEX2DEC(ZPRAVA(DEC2HEX(B1+1;8);2))No a pokud to chcete v jedné buňce, tak z toho vyleze takováto šílenost ;))=HEX2DEC(ZLEVA(DEC2HEX(HEX2DEC(DEC2HEX(ZLEVA(A1;NAJÍT(".";A1)-1)/1;2)&DEC2HEX(ČÁST(A1;NAJÍT(".";A1)+1;NAJÍT("|";DOSADIT(A1;".";"|";2))-NAJÍT(".";A1)-1);2)&DEC2HEX(ČÁST(A1;NAJÍT("|";DOSADIT(A1;".";"|";2))+1;NAJÍT("|";DOSADIT(A1;".";"|";3))-NAJÍT("|";DOSADIT(A1;".";"|";2))-1);2)&DEC2HEX(ČÁST(A1;NAJÍT("|";DOSADIT(A1;".";"|";3))+1;3);2))+1;8);2))&"."&HEX2DEC(ČÁST(DEC2HEX(HEX2DEC(DEC2HEX(ZLEVA(A1;NAJÍT(".";A1)-1)/1;2)&DEC2HEX(ČÁST(A1;NAJÍT(".";A1)+1;NAJÍT("|";DOSADIT(A1;".";"|";2))-NAJÍT(".";A1)-1);2)&DEC2HEX(ČÁST(A1;NAJÍT("|";DOSADIT(A1;".";"|";2))+1;NAJÍT("|";DOSADIT(A1;".";"|";3))-NAJÍT("|";DOSADIT(A1;".";"|";2))-1);2)&DEC2HEX(ČÁST(A1;NAJÍT("|";DOSADIT(A1;".";"|";3))+1;3);2))+1;8);3;2))&"."&HEX2DEC(ČÁST(DEC2HEX(HEX2DEC(DEC2HEX(ZLEVA(A1;NAJÍT(".";A1)-1)/1;2)&DEC2HEX(ČÁST(A1;NAJÍT(".";A1)+1;NAJÍT("|";DOSADIT(A1;".";"|";2))-NAJÍT(".";A1)-1);2)&DEC2HEX(ČÁST(A1;NAJÍT("|";DOSADIT(A1;".";"|";2))+1;NAJÍT("|";DOSADIT(A1;".";"|";3))-NAJÍT("|";DOSADIT(A1;".";"|";2))-1);2)&DEC2HEX(ČÁST(A1;NAJÍT("|";DOSADIT(A1;".";"|";3))+1;3);2))+1;8);5;2))&"."&HEX2DEC(ZPRAVA(DEC2HEX(HEX2DEC(DEC2HEX(ZLEVA(A1;NAJÍT(".";A1)-1)/1;2)&DEC2HEX(ČÁST(A1;NAJÍT(".";A1)+1;NAJÍT("|";DOSADIT(A1;".";"|";2))-NAJÍT(".";A1)-1);2)&DEC2HEX(ČÁST(A1;NAJÍT("|";DOSADIT(A1;".";"|";2))+1;NAJÍT("|";DOSADIT(A1;".";"|";3))-NAJÍT("|";DOSADIT(A1;".";"|";2))-1);2)&DEC2HEX(ČÁST(A1;NAJÍT("|";DOSADIT(A1;".";"|";3))+1;3);2))+1;8);2))

Vzorce anglicky (pro ostatní národy a šťastlivce s anglickou lokalizací ;) )
B1:=HEX2DEC(DEC2HEX(LEFT(A1,FIND(".",A1)-1)/1,2)&DEC2HEX(MID(A1,FIND(".",A1)+1,FIND("|",SUBSTITUTE(A1,".","|",2))-FIND(".",A1)-1),2)&DEC2HEX(MID(A1,FIND("|",SUBSTITUTE(A1,".","|",2))+1,FIND("|",SUBSTITUTE(A1,".","|",3))-FIND("|",SUBSTITUTE(A1,".","|",2))-1),2)&DEC2HEX(MID(A1,FIND("|",SUBSTITUTE(A1,".","|",3))+1,3),2))C1:=HEX2DEC(LEFT(DEC2HEX(B1+1,8),2))&"."&HEX2DEC(MID(DEC2HEX(B1+1,8),3,2))&"."&HEX2DEC(MID(DEC2HEX(B1+1,8),5,2))&"."&HEX2DEC(RIGHT(DEC2HEX(B1+1,8),2))Do jedné buňky=HEX2DEC(LEFT(DEC2HEX(HEX2DEC(DEC2HEX(LEFT(A1,FIND(".",A1)-1)/1,2)&DEC2HEX(MID(A1,FIND(".",A1)+1,FIND("|",SUBSTITUTE(A1,".","|",2))-FIND(".",A1)-1),2)&DEC2HEX(MID(A1,FIND("|",SUBSTITUTE(A1,".","|",2))+1,FIND("|",SUBSTITUTE(A1,".","|",3))-FIND("|",SUBSTITUTE(A1,".","|",2))-1),2)&DEC2HEX(MID(A1,FIND("|",SUBSTITUTE(A1,".","|",3))+1,3),2))+1,8),2))&"."&HEX2DEC(MID(DEC2HEX(HEX2DEC(DEC2HEX(LEFT(A1,FIND(".",A1)-1)/1,2)&DEC2HEX(MID(A1,FIND(".",A1)+1,FIND("|",SUBSTITUTE(A1,".","|",2))-FIND(".",A1)-1),2)&DEC2HEX(MID(A1,FIND("|",SUBSTITUTE(A1,".","|",2))+1,FIND("|",SUBSTITUTE(A1,".","|",3))-FIND("|",SUBSTITUTE(A1,".","|",2))-1),2)&DEC2HEX(MID(A1,FIND("|",SUBSTITUTE(A1,".","|",3))+1,3),2))+1,8),3,2))&"."&HEX2DEC(MID(DEC2HEX(HEX2DEC(DEC2HEX(LEFT(A1,FIND(".",A1)-1)/1,2)&DEC2HEX(MID(A1,FIND(".",A1)+1,FIND("|",SUBSTITUTE(A1,".","|",2))-FIND(".",A1)-1),2)&DEC2HEX(MID(A1,FIND("|",SUBSTITUTE(A1,".","|",2))+1,FIND("|",SUBSTITUTE(A1,".","|",3))-FIND("|",SUBSTITUTE(A1,".","|",2))-1),2)&DEC2HEX(MID(A1,FIND("|",SUBSTITUTE(A1,".","|",3))+1,3),2))+1,8),5,2))&"."&HEX2DEC(RIGHT(DEC2HEX(HEX2DEC(DEC2HEX(LEFT(A1,FIND(".",A1)-1)/1,2)&DEC2HEX(MID(A1,FIND(".",A1)+1,FIND("|",SUBSTITUTE(A1,".","|",2))-FIND(".",A1)-1),2)&DEC2HEX(MID(A1,FIND("|",SUBSTITUTE(A1,".","|",2))+1,FIND("|",SUBSTITUTE(A1,".","|",3))-FIND("|",SUBSTITUTE(A1,".","|",2))-1),2)&DEC2HEX(MID(A1,FIND("|",SUBSTITUTE(A1,".","|",3))+1,3),2))+1,8),2))

Možná je toto ten případ, že bych uvažoval o UDF - ale nevím ;)

Technická
prosím, přejmenujte vlákno (pokud to lze) aby bylo jasné, že to není o formátu, ale o práci s IP adresou. Děkujicitovat
#026122
avatar
=LEFT(A1;FIND(",";SUBSTITUTE(A1;".";",";3)))&RIGHT(A1;(LEN(A1)-FIND(",";SUBSTITUTE(A1;".";",";3))))+1

prípadne takto

=LEFT(A1;FIND(",";SUBSTITUTE(A1;".";",";3)))&MOD(RIGHT(A1;(LEN(A1)-FIND(",";SUBSTITUTE(A1;".";",";3))))+1;256)
Příloha: zip26122_form.zip (7kB, staženo 24x)
citovat
icon #026124
eLCHa
lajos musí říct, nicméně

"192.168.254.255" + 1
Vám vyjde
"192.168.254.0"
a to podle mne není o 1 větší, ale o 255 menší ;)citovat
#026125
avatar

eLCHa napsal/a:

lajos musí říct, nicméně

"192.168.254.255" + 1
Vám vyjde
"192.168.254.0"
a to podle mne není o 1 větší, ale o 255 menší ;)

No s tým ja už nič nenarobím. To je na rozhodnutí lajosa. 1citovat
#026138
lajos
Zdravím a všem děkuji za reakce...kdybych věděl,co spustím,tak bych radši mlčel:-))

eLCHa napsal/a:

lajos musí říct, nicméně

"192.168.254.255" + 1
Vám vyjde
"192.168.254.0"
a to podle mne není o 1 větší, ale o 255 menší ;)


Tak daleko se v rozsahu nedostanu:-)
Ještě jednou děkuji. 1citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje