2017-08-20 19 views
0

私は行内に多くのjsonデータを持っており、Excelからデータを抽出する必要があります。私は、典型的なセルのサンプルを提供し、それを単純なものにして、これからどのように "Lat"と "lng"の値を抽出し、それらを隣接するセルに配置するのでしょうか?それでは、JSONは、セルD2であるとしましょう、私はE3およびF3で 'LNG' の 'LAT' を必要とする:のscreengrab上の所望の出力のExcel - jsonデータ - 隣接するセルに特定の要素を戻す式/マクロ

projectId:'5571511970726f3903000000', 
lat:13.737738, 
lng:100.566147, 
destinations:[{"id":"57bc75550ce0fe28af001609","name":"BrownEyesRestaurant","category_name":"restaurant","category_class_name":"restaurants","lat":13.737875,"lng":100.566806,"travel_time":"lessthanaminutebyfoot","distance_human":"39m","distance_in_meters":39},{"id":"57bc75550ce0fe28af00160a","name":"HanaHana","category_name":"restaurant","category_class_name":"restaurants","lat":13.738215,"lng":100.566701,"travel_time":"1minutebyfoot","distance_human":"48m","distance_in_meters":48},{"id":"57bc75550ce0fe28af001602","name":"7-Eleven","category_name":"convenience_store","category_class_name":"shopping","lat":13.73763,"lng":100.566934,"travel_time":"1minutebyfoot","distance_human":"55m","distance_in_meters":55},{"id":"57bc75550ce0fe28af001636","name":"GoldenShrine","category_name":"pokestop","category_class_name":"pokemon_places","lat":13.737763,"lng":100.567128,"travel_time":"1minutebyfoot","distance_human":"74m","distance_in_meters":74},{"id":"57bc75550ce0fe28af00160d","name":"FatFishSeafoodBistro","category_name":"restaurant","category_class_name":"restaurants","lat":13.737128,"lng":100.567127,"travel_time":"2minutesbyfoot","distance_human":"130m","distance_in_meters":126},{"id":"57bc75550ce0fe28af001635","name":"NARZStoneBalls","category_name":"pokestop","category_class_name":"pokemon_places","lat":13.738174,"lng":100.56538,"travel_time":"2minutesbyfoot","distance_human":"140m","distance_in_meters":142}, 

例:

enter image description here

+0

[エクセルVBAでの解析JSON](https://stackoverflow.com/questions/6627652/parsing-json-in-excel-vba)の可能性のある重複 –

答えて

1

あなたの場合jsonを抽出するつもりはないので、このコードを試してください。

Sub test() 
    Dim s As String 
    Dim vSplit 

    s = Range("d2") 
    vSplit = Split(s, ",") 
    Range("e2") = Val(Replace(vSplit(1), "lat:", "")) 
    Range("f2") = Val(Replace(vSplit(2), "lng:", "")) 

End Sub 

編集

Sub test() 
    Dim s As String 
    Dim vSplit 
    Dim vDB, vR() 
    Dim i As Long, n As Long 
    vDB = Range("d2", Range("d" & Rows.Count).End(xlUp)) 
    n = UBound(vDB, 1) 
    ReDim vR(1 To n, 1 To 2) 
    For i = 1 To n 
     s = vDB(i, 1) 
     vSplit = Split(s, ",") 
     vR(i, 1) = Val(Replace(vSplit(1), "lat:", "")) 
     vR(i, 2) = Val(Replace(vSplit(2), "lng:", "")) 
    Next i 
    Range("e2").Resize(n, 2) = vR 
End Sub 
+0

それは素晴らしいことです、申し訳ありませんが、私は言っておくべきです:私はどのように私のExcelシートの下でこれを実行するか、私はあなたが見る約2400行を持っています。ありがとう。 –

+0

@RichStevens、私は自分のコードを編集しました。 –

+0

"範囲外のエラー"が発生し、コード内でこの行がハイライト表示されます。 "vR(i、1)= Val(vSplit(1)、lat:"、 "))" –

関連する問題