将 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,公式将是正常输入
我在 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,公式将是正常输入