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