在Excel中分割单元格

我想在最后一次出现的excel中拆分单元格(冒号)。 例如test:test1:test2必须被分割成test2即最后一次发生:

我怎样才能做到这一点 ?

假设你的最后一个string小于255个字符:

 =TRIM(RIGHT(SUBSTITUTE(B2,":",REPT(" ",255)),255)) 

如果您的最后一个子string:可能超过255个字符:

 =RIGHT(B2,LEN(B2)-MATCH(2,1/(MID(B2,ROW(INDIRECT("1:"&LEN(B2))),1)=":"))) 

两个公式与数组项( CTRL + SHIFT + ENTER

如果我正确地理解了你,你可以像VBA一样使用WrdArray来保存所有的单词,我们使用UBound来获取数组中的最后一个单词。

 Public Sub Spl() Dim WrdArray() As String Dim text_string As String text_string = Sheet1.Cells(2, 2) WrdArray() = Split(text_string, ":") x = WrdArray(UBound(WrdArray())) Sheet1.Cells(2, 3) = x End Sub 

感谢simoco指出原来的function不起作用。

=RIGHT(B2; SEARCH(":";B2;1))

你也可以编写自己的UDF包装InstrRev

 Public Function InstrReverse(cell As Range, char As String) As Integer InstrReverse = InstrRev(cell.Value, char) End Function 

然后(假设你的目标string在A1中),这会给你左边的部分

 =LEFT(A1,InstrReverse(A1,":")-1) 

这会给你正确的部分

 =RIGHT(A1,LEN(A1)-InstrReverse(A1,":"))