< 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 22x)
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

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse

Vyhledej

PavDD • 23.4. 12:29

Vyhledej

PavDD • 23.4. 11:47

Relativní cesta - zdroje Power Query

Alfan • 23.4. 10:52

Relativní cesta - zdroje Power Query

elninoslov • 23.4. 10:22

Relativní cesta - zdroje Power Query

lubo • 23.4. 10:15

Relativní cesta - zdroje Power Query

Alfan • 23.4. 10:11

Relativní cesta - zdroje Power Query

lubo • 23.4. 10:11