Excel 有多少个分割值?

Excel 有多少个分割值?,excel,vba,Excel,Vba,我有这根绳子 ?({“实体”:{“商业名称”:“FANEUIL HALL公寓,L.L.C.”,“UBI”:“601754321”,“类别”:“LLC”,“类型”:“利润”,“活跃”:“活跃”,“公司状态”:“WA”,“公司日期”:“1996年3月12日”,“到期日期”:“2014年12月31日”,“解散日期”:“注册人姓名”:“LESLIE R PESTERFIELD”,“注册人地址”:“第五大道901号,街3500号”,“登记注册城市”:“西雅图”,“登记注册州”:“华盛顿”,“登记注册地址”

我有这根绳子

?({“实体”:{“商业名称”:“FANEUIL HALL公寓,L.L.C.”,“UBI”:“601754321”,“类别”:“LLC”,“类型”:“利润”,“活跃”:“活跃”,“公司状态”:“WA”,“公司日期”:“1996年3月12日”,“到期日期”:“2014年12月31日”,“解散日期”:“注册人姓名”:“LESLIE R PESTERFIELD”,“注册人地址”:“第五大道901号,街3500号”,“登记注册城市”:“西雅图”,“登记注册州”:“华盛顿”,“登记注册地址”:“98164”,“替代地址”:“替代地址”:“替代地产”:“替代地”:“替代地”:“管理人”:[{“职务”:“经理”,“姓氏”:“希斯曼”,“中间名”:“W”,“名”:“迈克尔W”,“地址”:”“,”城市“:”棕榈泉“,”州“:”CA“,”邮编“:”}]})

我的目标是将
名字
中间名
姓氏
城市
、和
返回并排列到同一行不同列的单独单元格中

我的代码适用于多个管理人员,但一旦它成为一个管理人员,它就会按预期停止工作

我无法在下面的代码中计算我的
Else
部分

Sub test()
    Dim names As String

    Values = Split(resp, """GoverningPersons"":")

    If InStr(1, Values(1), "}, {") > 0 Then
        newvalues = Split(Values(1), "}, {")
        x = Split(newvalues(0), """LastName"": ")
        j = Split(x(1), ", ""MiddleName"":")
        m = Split(j(1), ", ""FirstName"":")
        r = j(0) + m(0) + m(1)
        l = Split(m(1), ", ""Address"": ")
        names = l(0)

        If InStr(1, l(0), "  ") > 0 Then
            al = Left(names, InStr(names, "  ") - 1)
            d = al + m(0) + j(0)
        Else
            d = l(0) + m(0) + j(0)
        End If

        a = Replace(d, Chr(32), "")
        g = Replace(a, Chr(34), " ")
    ElseIf InStr(1, Values(1), "[ }}") > 0 Then

    Else

    End If
End Sub

我尝试了我能想到的一切,但名字从来没有像我代码的第一部分那样出现。

这将让你开始

这里我向您展示了如何提取
名字
中间名
姓氏
。我相信您可以应用相同的逻辑来提取
城市

注意:我没有包括任何错误处理。我相信你会处理好的

Sub Sample()
    Dim resp As String
    Dim Lastname As String, Midname As String, Firstname As String

    '~~> For testing purpose, I stored the json string in Cell A1
    resp = Range("A1").Value

    '~~> This will give you last name
    Lastname = GetValue(resp, """LastName"":")
    Debug.Print "Lastname :" & Lastname

    '~~> This will give you middle name
    Midname = GetValue(resp, """MiddleName"":")
    Debug.Print "Middle Name :" & Midname

    '~~> This will give you First name
    Firstname = GetValue(resp, """FirstName"":")
    Debug.Print "First Name :" & Firstname
End Sub

Function GetValue(sString As String, sDelim As String) As String
    Dim MyArray, tmpAr

    MyArray = Split(sString, sDelim)
    tmpAr = Split(MyArray(1), ",")
    GetValue = Trim(Replace(tmpAr(0), Chr(34), ""))
End Function
屏幕截图

Excel工作表

VBA编辑器


这里有另一种方法(需要一点javascript/JSON知识)


看在上帝的份上,把你的问题格式化……使用正确的标签并提供一个问题的最小示例。还有什么需要清理@thebluedog吗?我很惊讶你的代码竟然在编译。。。它应该在
names=l(0)
上失败。
names
是Excel VBA中的一个保留字。您是在Excel VBA中执行此操作的吗?我最好从哪里获得一点JSON/javascript知识?@tbur-JSON:javascript是一个更大的主题。。。
Sub tester()

'add project reference to "Microsoft script control"
Dim so As New ScriptControl
Dim i As Integer, num As Integer
Dim js As String, json As String

    so.Language = "jscript"


    json = "{""entity"": {""BusinessName"": ""FANEUIL HALL APARTMENTS, L.L.C."", " & _
        " ""UBI"": ""601754321"", ""Category"": ""LLC"", ""Type"": ""Profit"", ""Active"": " & _
        " ""Active"", ""StateOfIncorporation"": ""WA"", ""DateOfIncorporation"": " & _
        " ""12/03/1996"", ""ExpirationDate"": ""12/31/2014"", ""DissolutionDate"": """", " & _
        " ""RegisteredAgentName"": ""LESLIE R PESTERFIELD"", ""RegisteredAgentAddress"": " & _
        " ""901 FIFTH AVE STE 3500"", ""RegisteredAgentCity"": ""SEATTLE"", " & _
        " ""RegisteredAgentState"": ""WA"", ""RegisteredAgentZip"": ""98164"", " & _
        " ""AlternateAddress"": """", ""AlternateCity"": """", ""AlternateState"": """", " & _
        " ""AlternateZip"": """", ""GoverningPersons"": [  { ""Title"": ""Manager"", " & _
        " ""LastName"": ""HEATHMAN"", ""MiddleName"": ""W"", ""FirstName"": ""MICHAEL W"", " & _
        " ""Address"": """", ""City"": ""PALM SPRINGS"", ""State"": ""CA"", ""Zip"": """" } ]}}"

     so.AddCode "var o = eval(" & json & ");"

     num = so.Eval("o.entity.GoverningPersons.length") ' >> 1

     For i = 0 To num - 1
        js = "o.entity.GoverningPersons[" & i & "]."
        Debug.Print so.Eval(js & "LastName;")
        Debug.Print so.Eval(js & "FirstName;")
        Debug.Print so.Eval(js & "MiddleName;")
        'etc
     Next i


End Sub