Excel,从IP地址中删除前导0


8

我有以下形式的IP地址列表:

    010.125.015.013
    010.125.153.012
    010.125.012.135

由于Windows认为它是点分八进制形式,因此无法使用该形式执行ping操作。我需要删除每个点后的前导0。

这不是那么简单,因为其中一些根本没有前导零,而有些仅在最后一个八位位组有,而有些则在第三个八位位组或两者都有。

除非有解决方案强制ping解释为点分十进制IP地址。

有人可以帮忙吗?

谢谢


2
我们是否应该假设您要在类似的位置保留0 123.234.000.276?(是的,是假的。)
CVn 2015年

在我的示例中必须没有0,因此:'010.125.015.013''010.125.153.012''010.125.012.135'它们必须为:'10 .125.15.13''10 .125.153.12''10 .125.12.135'但是当例如:“ 010.155.105.013”必须为:“ 10.155.105.13”
Michal

您可以使用regex的功能轻松完成此操作!使用此链接开始。正则表达式非常简单^0(在字符串开头匹配零!)
Dudemanword

2
删除前导零会更改IP,因为前导零表示八进制数。
CodesInChaos

1
@CodesInChaos通常是的。但是输入看起来像是有人简单地在零前面加了零,以使每个八位位组长三位数。似乎不太可能有人在执行该操作时也将表示法更改为八进制,除了它不适用于范围为64到99的八位字节。带前导零的数字到带有无前导零的十进制数字的标准符号。
kasperd 2015年

Answers:


11

您可以执行以下操作:

  1. 我假设每个IP都在一个单元格中作为文本。现在,将此单个单元格转换为列(通过使用“文本到列”功能),将.(点)指定为定界符。现在,它们将在接下来的4个连续像元中作为数字分布,现在应该消失前导零

  2. 使用函数Concatenate(有关详细信息,请参见Excel帮助,并通过.在每个字符串之后包含来连接4个数字。现在,您应该具有一个具有相同IP的单元格,但不包括所有前导零。


12

关于什么

=INT(MID(A1,1,3)) & "." & 
 INT(MID(A1,5,3)) & "." & 
 INT(MID(A1,9,3)) & "." & 
 INT(MID(A1,13,3))

6

这个使用SUBSTITUTE

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE("@."&TRIM(C5),".0","."),".0","."),"@.","")

在此处输入图片说明

首先,它会修剪IP周围的空格(in C5),添加一个前缀@..0.两次替换,然后删除添加的prefix @.


ew!与到目前为止的其他答案相比,我发现这个答案是“横向思考”:+1,因为(玩笑)您在codegolf上获胜(更认真地)是TRIM为了确保不会留有任何空白(...仍然到目前为止赢得代码高尔夫!;
danicotra 2015年

3

按时殴打(我必须将公式从意大利语翻译为英语...我也只处置LibreOffice ...)无论如何,假设IP地址在A列中,我建议这样做:

=CONCATENATE(VALUE(MID(A1,1,3)),".",VALUE(MID(A1,5,3)),".",VALUE(MID(A1,9,3)),".",VALUE(MID(A1,13,3)))

@fheub:非常感谢您的赞赏。意大利语版的Ms-Excel具有几乎所有不同公式的名称;但是,我们;不使用,公式的参数分隔符,因此需要对其进行更改-顺便说一句,在意大利,我们使用逗号(而不是点)作为数字小数部分的分隔符。最后但并非最不重要的一点是,我在工作中使用Excel,但在家里我只有LibreOffice,并且必须承认它的记录不如Excel(我一直希望公式名称在两者之间保持相同),并且与之相比肯定缺少一些不错的功能...
danicotra

PS我忘记了... LibreOffice与Excel有所不同,即使表/单元格引用是.在LibreOffice 中进行的,而在Excel中则必须使用!'Sheet 1'.A1<=> 'Sheet 1'!A1)。
danicotra 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.