交换excel列中的分隔字符串
我在一个非常大的excel电子表格中有一列,在某些情况下格式不正确。它应该首先包含街道地址,然后是名称,用连字符分隔,如图所示: 圣史密斯大街123号 但是,有些格式是相反的,例如: 琼斯231高街 所有地址都以数字开头,所有名称都以字母开头。我正在寻找一个宏或代码,将只交换名称和地址,它是错误的格式。我曾尝试将其转换为逗号分隔,以将它们分开,但由于它们只是间歇性出现,我仍然需要手动逐个修复它们交换excel列中的分隔字符串,excel,Excel,我在一个非常大的excel电子表格中有一列,在某些情况下格式不正确。它应该首先包含街道地址,然后是名称,用连字符分隔,如图所示: 圣史密斯大街123号 但是,有些格式是相反的,例如: 琼斯231高街 所有地址都以数字开头,所有名称都以字母开头。我正在寻找一个宏或代码,将只交换名称和地址,它是错误的格式。我曾尝试将其转换为逗号分隔,以将它们分开,但由于它们只是间歇性出现,我仍然需要手动逐个修复它们 有什么建议吗?我决不是一个Excel宏专家。谢谢 拆分连字符上的字符串,然后在第二个元素中查找空格
有什么建议吗?我决不是一个Excel宏专家。谢谢 拆分连字符上的字符串,然后在第二个元素中查找空格
dim i as long, tmp as variant
with worksheets("sheet1")
for i = 2 to .cells(.rows.count, "a").end(xlup).row
tmp = split(.cells(i, "a").value2, "-")
if cbool(instr(1, tmp(1), " ")) then _
.cells(i, "a") = join(array(tmp(1), tmp(0)), "-")
next i
end with
正如你所写
- 街道名称是以数字开头,以连字符或字符串结尾的任何字符串
- 名称是以非数字开头,以连字符或字符串结尾的任何字符串
这可以只使用本机VBA来完成(虽然起初我打算使用正则表达式)
- 在连字符上拆分
- 根据是否以数字开头重新排列
- 如果没有连字符或没有指定的数字和非数字开头,请执行一些错误检查
姓氏中有空格吗?正如我所说的,在合伙关系中也可以有符号,如符号和。比如“史密斯和琼斯”。顺便说一下,谢谢你的回复。
Option Explicit
Function fmtAddressName2(S As String) As String
Dim sAddr As String, sName As String
Dim v As Variant
v = Split(S, "-")
On Error GoTo badFormat
If IsNumeric(Left(v(0), 1)) And Not IsNumeric(Left(v(1), 1)) Then
sAddr = v(0)
sName = v(1)
ElseIf Not IsNumeric(Left(v(0), 1)) And IsNumeric(Left(v(1), 1)) Then
sAddr = v(1)
sName = v(0)
Else
GoTo badFormat
End If
fmtAddressName2 = sAddr & "-" & sName
Exit Function
badFormat:
'return unchanged string
fmtAddressName2 = S
'or could return an error message
End Function