【发布时间】:2020-03-05 20:14:47
【问题描述】:
在 MS Excel 中,我需要用逗号分隔文本,从右侧提取三项内容并将它们放在三个不同的列中,即城市、州和国家/地区。
问题:在完整地址的原文中,有时我只得到国家或州。此外,完整地址的长度也是不同的。
这是实际的spreadsheet。
【问题讨论】:
标签: excel vba excel-formula spreadsheet
在 MS Excel 中,我需要用逗号分隔文本,从右侧提取三项内容并将它们放在三个不同的列中,即城市、州和国家/地区。
问题:在完整地址的原文中,有时我只得到国家或州。此外,完整地址的长度也是不同的。
这是实际的spreadsheet。
【问题讨论】:
标签: excel vba excel-formula spreadsheet
假设数据保存在A1:A6 中,如屏幕截图所示
在C1 中,上下复制公式:
=IFERROR(TRIM(MID(SUBSTITUTE(","&$A1,",",REPT(" ",399)),(LEN($A1)-LEN(SUBSTITUTE(($A1),",",""))+COLUMN(A1)-2)*399,399)),"")
【讨论】:
首先在一个标准模块中输入以下三个用户自定义函数:
Public Function LastWord(s As String) As String
Dim arr
s = ", , , , , " & s
arr = Split(s, ", ")
LastWord = arr(UBound(arr))
End Function
Public Function NLastWord(s As String) As String
Dim arr
s = ", , , , , " & s
arr = Split(s, ", ")
NLastWord = arr(UBound(arr) - 1)
End Function
Public Function NNLastWord(s As String) As String
Dim arr
s = ", , , , , " & s
arr = Split(s, ", ")
NNLastWord = arr(UBound(arr) - 2)
End Function
然后在E1中输入:
=lastword(A1)
并向下复制。在 D1 中输入:
=NLastWord(A1)
并向下复制。在 C1 中输入:
=NNLastWord(A1)
并向下复制:
【讨论】: