Luk*_*den 7 excel formula excel-formula excel-2013
我想使用公式分离出IP地址的八位字节.
我尝试过像替换和查找这样的东西,但无法解决这个问题.
我想要实现的例子,仅从Cell A1
和Cell开始B1
:
10.17.9.192 | 192.168.0.1
10 | 192
17 | 168
9 | 0
192 | 1
Run Code Online (Sandbox Code Playgroud)
zx8*_*754 15
这是经典的一种配方解决方案:
=TRIM(MID(SUBSTITUTE(A$1,".",REPT(" ",999)),(ROW()-1)*999-998,999))
Run Code Online (Sandbox Code Playgroud)
"."
- 是分隔符.
(ROW()-1)
- 在分隔文本中给出第n个项目.
更多信息在EXCELFOX
这里有四个你需要的公式
A2:=LEFT(A1,FIND(".",A1)-1)
A3:=MID(A1,FIND(".",A1)+1,FIND(".",A1,FIND(".",A1)+1)-FIND(".",A1)-1)
A4:=MID(A1,FIND(".",A1,FIND(".",A1)+1)+1,FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)-(FIND(".",A1,FIND(".",A1)+1)+1))
A5:=MID(A1,FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1)+1,LEN(A1)-FIND(".",A1,FIND(".",A1,FIND(".",A1)+1)+1))
Run Code Online (Sandbox Code Playgroud)
FIND函数有一个名为start的第三个参数.因此,要找到第二个小数点,您需要查找小数点,但是从第一个小数点加1开始.就像这样
=FIND(".",A1,4)
Run Code Online (Sandbox Code Playgroud)
你从4开始,因为你的第一个小数点位于第3位.但你不知道,所以你必须计算'4'.
=FIND(".",A1,FIND(".",A1)+1)
Run Code Online (Sandbox Code Playgroud)
现在得到4,我们找到第一个小数,然后加1.找到第二个小数点并不算太糟糕.但要找到第三个,你必须走另一个层次.而第四个是另一个层面.它难以阅读且难以维护.
为了使它更容易一些,您可以使用辅助列.
A2 =LEFT(A1,C2-1)
C2 =FIND(".",A1)
A3 =MID(A1,C2+1,C3-C2-1)
C3 =FIND(".",A1,C2+1)
A4 =MID(A1,C3+1,C4-C3-1)
C4 =FIND(".",A1,C3+1)
A5 =MID(A1,C4+1,LEN(A1)-C4-1)
Run Code Online (Sandbox Code Playgroud)
那样你就用C做你的FIND并参考A中的那些数字.
如果您不喜欢帮助列,而我不喜欢,那么您可以编写类似的UDF
Public Function FINDi(find_text As String, within_text As String, Optional instance As Long) As Long
Dim lReturn As Long
Dim i As Long
Const lFINDFIRST As Long = 0
If instance = lFINDFIRST Then
lReturn = InStr(1, within_text, find_text)
ElseIf instance < lFINDFIRST Then 'negative numbers finds last
lReturn = InStrRev(within_text, find_text)
Else
lReturn = 0
For i = 1 To instance
lReturn = InStr(lReturn + 1, within_text, find_text)
Next i
End If
FINDi = lReturn
End Function
Run Code Online (Sandbox Code Playgroud)
这给你这样的公式
A2 =LEFT(A1,findi(".",A1)-1)
A3 =MID(A1,findi(".",A1)+1,findi(".",A1,2)-findi(".",A1,1)-1)
A4 =MID(A1,findi(".",A1,2)+1,findi(".",A1,3)-findi(".",A1,2)-1)
A5 =MID(A1,findi(".",A1,3)+1,LEN(A1)-findi(".",A1,3)-1)
Run Code Online (Sandbox Code Playgroud)
不像helper列那样干净,但是自包含并且肯定比内置的FIND更好.
您可以编写的另一个UDF重复VBA的拆分功能.
Public Function SplitString(ByVal sInput As String, ByVal sDelim As String, ByVal lWhich As Long) As String
SplitString = Split(sInput, sDelim)(lWhich - 1)
End Function
Run Code Online (Sandbox Code Playgroud)
那个公式看起来像
A2 =SplitString($A$1,".",ROW()-1)
A3 =SplitString($A$1,".",ROW()-1)
A4 =SplitString($A$1,".",ROW()-1)
A5 =SplitString($A$1,".",ROW()-1)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21520 次 |
最近记录: |