如何使用 VBA 中编写的自定义公式从 excel 单元格中选择特定的字符串片段
How can I pick specific string fragments out of an excel cell using a custom formula written in VBA
在工作中,我需要每周根据 Salesforce 实例中的记录重新格式化不正确的地址。我们使用报告收集格式错误的地址,并将它们导出到 Excel 文件。我的工作只是简单地操作文件中的数据以正确格式化它们,然后将它们重新插入数据库。
通常地址格式如下:
5 芝麻街,任何城镇,任何地方
手动分隔这些很容易,但我通常必须一次处理数百个地址,使用默认的 excel 公式往往需要同时处理多个单元格才能打破它变成碎片。
因此,我通过单元格编写了自定义公式 运行,并根据给定的 "Comma Number" 编写了字符串的特定片段 return。所以如果我给逗号 1,我会得到“5 Sesame Street”,2 会得到我 "Anytown",等等
到目前为止,这是我的代码:
Public Function fragmentAddress(address As String, numberofcommas As Integer) As String
seen = 1
lastComma = -1
Dim x As Long
Dim frag As Long
For x = 0 To Len(address)
If Mid(address, x, 1) = "," & numberofcommas = seen Then
Exit For
ElseIf Mid(address, x, 1) = "," & numberofcommas <> seen Then
seen = seen + 1
lastComma = x
End If
Next
frag = Mid(address, lastComma + 1, seen - lastComma)
fragmentAddress = frag
我还没有实现处理最终值的能力,但它没有给我任何输出,只输出一个“#VALUE!”当我试图给它输入时出错
=fragmentAddress("3 Ashley Close, Charlton Kings",1)
我有一些编程经验,但这是我第一次在 VBA 中写任何东西。
如有任何帮助,我们将不胜感激。
不太确定你的问题是什么,但这更简单:
Public Function GetAddressFragment(ByVal Address As String, ByVal Index As Integer) As String
Dim addr() As String
addr = Split(Address, ",")
On Error Resume Next
GetAddressFragment = Trim(addr(Index - 1))
End Function
在工作中,我需要每周根据 Salesforce 实例中的记录重新格式化不正确的地址。我们使用报告收集格式错误的地址,并将它们导出到 Excel 文件。我的工作只是简单地操作文件中的数据以正确格式化它们,然后将它们重新插入数据库。
通常地址格式如下:
5 芝麻街,任何城镇,任何地方
手动分隔这些很容易,但我通常必须一次处理数百个地址,使用默认的 excel 公式往往需要同时处理多个单元格才能打破它变成碎片。
因此,我通过单元格编写了自定义公式 运行,并根据给定的 "Comma Number" 编写了字符串的特定片段 return。所以如果我给逗号 1,我会得到“5 Sesame Street”,2 会得到我 "Anytown",等等
到目前为止,这是我的代码:
Public Function fragmentAddress(address As String, numberofcommas As Integer) As String
seen = 1
lastComma = -1
Dim x As Long
Dim frag As Long
For x = 0 To Len(address)
If Mid(address, x, 1) = "," & numberofcommas = seen Then
Exit For
ElseIf Mid(address, x, 1) = "," & numberofcommas <> seen Then
seen = seen + 1
lastComma = x
End If
Next
frag = Mid(address, lastComma + 1, seen - lastComma)
fragmentAddress = frag
我还没有实现处理最终值的能力,但它没有给我任何输出,只输出一个“#VALUE!”当我试图给它输入时出错
=fragmentAddress("3 Ashley Close, Charlton Kings",1)
我有一些编程经验,但这是我第一次在 VBA 中写任何东西。
如有任何帮助,我们将不胜感激。
不太确定你的问题是什么,但这更简单:
Public Function GetAddressFragment(ByVal Address As String, ByVal Index As Integer) As String
Dim addr() As String
addr = Split(Address, ",")
On Error Resume Next
GetAddressFragment = Trim(addr(Index - 1))
End Function