String 如何使用VBA编写的自定义公式从excel单元格中提取特定的字符串片段

String 如何使用VBA编写的自定义公式从excel单元格中提取特定的字符串片段,string,delimiter,String,Delimiter,在工作中,我需要每周根据Salesforce实例中的记录重新格式化不正确的地址。我们使用报表收集格式不正确的地址,并将其导出到Excel文件。我的工作只是操作文件中的数据以正确格式化它们,然后将它们重新插入数据库 通常,地址的格式如下: 5芝麻街、任何城镇、任何地方 手动分离这些单元格很容易,但我通常一次要处理数百个地址,而使用默认的excel公式往往需要同时对多个单元格进行大量的争用,才能将其分解为多个片段 因此,我编写了一个自定义公式来遍历单元格,并根据给定的“逗号数”返回字符串的特定片段。

在工作中,我需要每周根据Salesforce实例中的记录重新格式化不正确的地址。我们使用报表收集格式不正确的地址,并将其导出到Excel文件。我的工作只是操作文件中的数据以正确格式化它们,然后将它们重新插入数据库

通常,地址的格式如下:

5芝麻街、任何城镇、任何地方

手动分离这些单元格很容易,但我通常一次要处理数百个地址,而使用默认的excel公式往往需要同时对多个单元格进行大量的争用,才能将其分解为多个片段

因此,我编写了一个自定义公式来遍历单元格,并根据给定的“逗号数”返回字符串的特定片段。所以如果我给一个逗号数字1,我会得到“芝麻街5号”,2会得到“Anytown”,等等

以下是我目前的代码:

公共函数片段地址(地址为字符串,numberOfcomas为整数)为字符串
SEED=1
lastcoma=-1
暗x等长
暗淡无光
对于x=0到Len(地址)
如果Mid(地址,x,1)=“,”和numberofcommas=可见,则
退出
ElseIf Mid(地址,x,1)=“,”和数字逗号,如图所示
看见=看见+1
lastcoma=x
如果结束
下一个
frag=Mid(地址,lastcoma+1,seen-lastcoma)

fragmentAddress=frag
不确定您的问题是什么,但这更简单:

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

太好了,谢谢。很抱歉,问题太复杂了