将 excel 中的第 3 个八位字节的值增加 4

Increment the 3rd octet in excel by value of 4

我在 excel 中有一个 IP 地址为 10.0.0.0 的单元格,但我想将第三个八位字节递增 4。因此下面下一个单元格的输出将为 10.0.4.0

如果可能的话,我如何在没有任何复杂的 VB 脚本的情况下实现这一目标。

谢谢!

您可以使用这样的公式将 4 添加到第三个八位字节:

=TEXTJOIN( ".", 1,
           {0;0;4;0} +
           FILTERXML( "<m><s>" & SUBSTITUTE( A1, ".", "</s><s>" ) & "</s></m>", "//s" ) )

其中 A1 是目标字符串“10.0.0.0”所在的位置,而 4 显然位于第三个位置。您还可以通过在“{0;0;4;0}”数组中输入所需的偏移量来使其成为通用解决方案。

hmmmm - 经过进一步的思考,您需要确保八位字节在 255 处起作用。这是一个更安全的版本:

=TEXTJOIN( ".", 1,
           BITAND( {0;0;4;0} +
                     FILTERXML( "<m><s>" & SUBSTITUTE( A1, ".", "</s><s>" ) & "</s></m>", "//s" ),
                   {255;255;255;255} ) )

Excel 2019 年及以后

的公式解决方案

尝试如下设置table

1] 在Octet D2中,按1到4输入Octet的位置编号

2] 在 Increment E2 中,输入 Increment

的任意值

然后,

3] 在 Result B2 中,输入数组 (CSE) 公式:

=TEXTJOIN(".",1,BITAND(TRIM(MID(SUBSTITUTE($A2,".",REPT(" ",50)),{1;50;100;150},50))+IF(ROW(1:4)=D2,E2,0),{255;255;255;255}))

或者,

使用类似于 mark fitzpatrick 公式的 Filterxml 函数。

结果B2中,输入数组(CSE)公式:

=TEXTJOIN(".",1,BITAND(FILTERXML("<a><b>"&SUBSTITUTE(A2,".","</b><b>")&"</b></a>","//b")+IF(ROW(1:4)=D2,E2,0),{255;255;255;255}))

备注:

1] 尝试将八位字节数从 1 更改为 4,并在测试结果时增加值。

2] 对于 Office 365,公式将是正常输入