Json-Tek Hücreye Aktarılan Verilerin Satırlara Ayrışması

Katılım
9 Kasım 2022
Mesajlar
1
Excel Vers. ve Dili
excel 16.54
Herkese merhaba,

İçerisinden çıkamadığım bir problemle karşılaştığım için bu foruma üye oldum. Umarım başlıkta iyi izah edebilmişimdir problemi.

Bir web sitesinden elde ettiğim verileri json formatında kaydediyorum, daha sonra ilgili dosyaları excel'de açıyorum. Tek hücre içerisinde aşağıdaki gibi bir görüntü karşıma çıkıyor. Burada 0'dan 4'e kadar 5 ilan var. Bunu, "ilan_no" parametresinden önce görebilirsiniz.Bu verilerin işlenebilmesi için her bir satırda tek bir ilana ait bilgiler yer alması lazım. Bu konuda verebileceğiniz tavsiyelere açığım.

Şimdiden teşekkürler.

{0: {"ilan_no": "1056724186", "fiyat": "475.000 TL", "kimden": "Sahibinden", "tapu_durumu": "Hisseli", "krediye_uygun": "Hay\u0131r", "aidat": "Belirtilmemi\u015f", "site_adi": "Belirtilmemi\u015f", "site_icerisinde": "Hay\u0131r", "kullanim_durumu": "M\u00fclk Sahibi", "esyali": "Hay\u0131r", "balkon": "Var", "banyo_sayisi": "1", "isitma": "Do\u011falgaz (Kombi)", "kat_sayisi": "2", "bulundugu_kat": "Bah\u00e7e Kat\u0131", "bina_yasi": "31 ve \u00fczeri", "oda_sayisi": "3+1", "metrekare_net": "95", "metrekare_brut": "141", "emlak_tipi": "Sat\u0131l\u0131k Daire", "ilan_tarihi": "09 Ekim 2022", "ozellikler": "-Bat\u0131-ADSL-Amerikan,Kap\u0131-Amerikan,Mutfak-Barbek\u00fc-Fiber,\u0130nternet-Kiler-Klima-K\u00fcvet-Mutfak,(Ankastre)-Mutfak,Do\u011falgaz\u0131-Spot,Ayd\u0131nlatma-\u015e\u00f6mine-Teras-Wi-Fi-\u00c7ocuk,Oyun,Park\u0131-Is\u0131,Yal\u0131t\u0131m\u0131-Kablo,TV-Kamera,Sistemi-Otopark,-,A\u00e7\u0131k-Ses,Yal\u0131t\u0131m\u0131-Su,Deposu-Uydu-Al\u0131\u015fveri\u015f,Merkezi-Belediye-Cami-Eczane-E\u011flence,Merkezi-Hastane-\u0130lkokul-Ortaokul-\u0130tfaiye-Kilise-Lise-Market-Park-Polis,Merkezi-Sa\u011fl\u0131k,Oca\u011f\u0131-Semt,Pazar\u0131-Spor,Salonu-\u015eehir,Merkezi-\u00dcniversite-Anayol-Avrasya,T\u00fcneli-Bo\u011faz,K\u00f6pr\u00fcleri-Cadde-Dolmu\u015f-E-5-Havaalan\u0131-\u0130skele-Marmaray-Metro-Metrob\u00fcs-Minib\u00fcs-Otob\u00fcs,Dura\u011f\u0131-Sahil-Tramvay-Tren,\u0130stasyonu-Park,&,Ye\u015fil,Alan-\u015eehir-Bah\u00e7eli"}, "1": {"ilan_no": "1053203288", "fiyat": "1.050.000 TL", "kimden": "Emlak Ofisinden", "tapu_durumu": "Kat \u0130rtifakl\u0131", "krediye_uygun": "Evet", "aidat": "50", "site_adi": "Belirtilmemi\u015f", "site_icerisinde": "Hay\u0131r", "kullanim_durumu": "Bo\u015f", "esyali": "Hay\u0131r", "balkon": "Yok", "banyo_sayisi": "1", "isitma": "Do\u011falgaz (Kombi)", "kat_sayisi": "4", "bulundugu_kat": "Bah\u00e7e Kat\u0131", "bina_yasi": "5-10 aras\u0131", "oda_sayisi": "1+1", "metrekare_net": "45", "metrekare_brut": "60", "emlak_tipi": "Sat\u0131l\u0131k Daire", "ilan_tarihi": "25 Ekim 2022", "ozellikler": "-G\u00fcney-Amerikan,Kap\u0131-Amerikan,Mutfak-\u00c7elik,Kap\u0131-Du\u015fakabin-G\u00f6r\u00fcnt\u00fcl\u00fc,Diafon-Hilton,Banyo-Laminat,Zemin-Mutfak,Do\u011falgaz\u0131-PVC,Do\u011frama-Otopark,-,A\u00e7\u0131k-Uydu-\u0130lkokul-Ortaokul-Market-Park-Semt,Pazar\u0131-Minib\u00fcs-Otob\u00fcs,Dura\u011f\u0131-\u015eehir-Bah\u00e7e,Kat\u0131-Zemin,Kat-Giri\u015f,/,Rampa"}, "2": {"ilan_no": "1036134992", "fiyat": "1.100.000 TL", "kimden": "Emlak Ofisinden", "tapu_durumu": "Kat \u0130rtifakl\u0131", "krediye_uygun": "Evet", "aidat": "Belirtilmemi\u015f", "site_adi": "Belirtilmemi\u015f", "site_icerisinde": "Hay\u0131r", "kullanim_durumu": "M\u00fclk Sahibi", "esyali": "Hay\u0131r", "balkon": "Yok", "banyo_sayisi": "1", "isitma": "Do\u011falgaz (Kombi)", "kat_sayisi": "5", "bulundugu_kat": "Giri\u015f Alt\u0131 Kot 1", "bina_yasi": "5-10 aras\u0131", "oda_sayisi": "1+1", "metrekare_net": "38", "metrekare_brut": "45", "emlak_tipi": "Sat\u0131l\u0131k Daire", "ilan_tarihi": "23 Ekim 2022", "ozellikler": "-G\u00fcney-Amerikan,Mutfak-\u00c7elik,Kap\u0131-Du\u015fakabin-Fiber,\u0130nternet-Kartonpiyer-Mutfak,Do\u011falgaz\u0131-PVC,Do\u011frama-Hidrofor-Is\u0131,Yal\u0131t\u0131m\u0131-Ses,Yal\u0131t\u0131m\u0131-Al\u0131\u015fveri\u015f,Merkezi-Belediye-Cami-Eczane-Hastane-\u0130lkokul-Ortaokul-\u0130tfaiye-Lise-Market-Polis,Merkezi-Sa\u011fl\u0131k,Oca\u011f\u0131-\u015eehir,Merkezi-\u00dcniversite-Cadde-E-5-Metro-Minib\u00fcs-Otob\u00fcs,Dura\u011f\u0131-\u015eehir-Zemin,Kat"}, "3": {"ilan_no": "1045673971", "fiyat": "980.000 TL", "kimden": "Emlak Ofisinden", "tapu_durumu": "Kat M\u00fclkiyetli", "krediye_uygun": "Evet", "aidat": "Belirtilmemi\u015f", "site_adi": "Belirtilmemi\u015f", "site_icerisinde": "Hay\u0131r", "kullanim_durumu": "Kirac\u0131l\u0131", "esyali": "Hay\u0131r", "balkon": "Var", "banyo_sayisi": "1", "isitma": "Do\u011falgaz (Kombi)", "kat_sayisi": "3", "bulundugu_kat": "Zemin Kat", "bina_yasi": "5-10 aras\u0131", "oda_sayisi": "1+1", "metrekare_net": "55", "metrekare_brut": "70", "emlak_tipi": "Sat\u0131l\u0131k Daire", "ilan_tarihi": "20 Ekim 2022", "ozellikler": "-G\u00fcney-Du\u015fakabin-Is\u0131cam-Mutfak,Do\u011falgaz\u0131-PVC,Do\u011frama-Is\u0131,Yal\u0131t\u0131m\u0131-Uydu-Al\u0131\u015fveri\u015f,Merkezi-Eczane-Hastane-Market-Sa\u011fl\u0131k,Oca\u011f\u0131-Semt,Pazar\u0131-\u015eehir,Merkezi-Cadde-E-5-Minib\u00fcs-Zemin,Kat"}, "4": {"ilan_no": "1058811292", "fiyat": "1.000.000 TL", "kimden": "Emlak Ofisinden", "tapu_durumu": "Kat M\u00fclkiyetli", "krediye_uygun": "Evet", "aidat": "Belirtilmemi\u015f", "site_adi": "Belirtilmemi\u015f", "site_icerisinde": "Hay\u0131r", "kullanim_durumu": "Kirac\u0131l\u0131", "esyali": "Hay\u0131r", "balkon": "Var", "banyo_sayisi": "1", "isitma": "Do\u011falgaz (Kombi)", "kat_sayisi": "4", "bulundugu_kat": "Bah\u00e7e Kat\u0131", "bina_yasi": "11-15 aras\u0131", "oda_sayisi": "2+1", "metrekare_net": "80", "metrekare_brut": "90", "emlak_tipi": "Sat\u0131l\u0131k Daire", "ilan_tarihi": "21 Ekim 2022", "ozellikler": "-Do\u011fu-G\u00fcney-Amerikan,Kap\u0131-\u00c7elik,Kap\u0131-Du\u015fakabin-Kartonpiyer-Laminat,Zemin-Mutfak,(Laminat)-Mutfak,Do\u011falgaz\u0131-PVC,Do\u011frama-Seramik,Zemin-Is\u0131,Yal\u0131t\u0131m\u0131-Al\u0131\u015fveri\u015f,Merkezi-Cami-Eczane-Hastane-\u0130lkokul-Ortaokul-\u0130tfaiye-Lise-Market-Park-Polis,Merkezi-Sa\u011fl\u0131k,Oca\u011f\u0131-Semt,Pazar\u0131-Spor,Salonu-\u015eehir,Merkezi-\u00dcniversite-Anayol-Cadde-Dolmu\u015f-Metro-Minib\u00fcs-Otob\u00fcs,Dura\u011f\u0131-\u015eehir-Bah\u00e7e,Kat\u0131"}}
 

erd5334

Altın Üye
Katılım
26 Nisan 2012
Mesajlar
123
Excel Vers. ve Dili
excel 365
Altın Üyelik Bitiş Tarihi
01-12-2026
menülerden Veri, oradan verileri al oradan da dosyadan, oradan da json dosyasından al diyerek yapabilirsiniz
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,642
Excel Vers. ve Dili
Pro Plus 2021
32 bit excel de çalışır.
Kod:
Option Explicit
'https://stackoverflow.com/questions/6627652/parsing-json-in-excel-vba
'Private ScriptEngine As ScriptControl
Private ScriptEngine As Object
Public Sub InitScriptEngine()
    'Set ScriptEngine = New ScriptControl
    Set ScriptEngine = CreateObject("MSScriptControl.ScriptControl")
    ScriptEngine.Language = "JScript"
    ScriptEngine.AddCode "function getProperty(jsonObj, propertyName) { return jsonObj[propertyName]; } "
    ScriptEngine.AddCode "function getKeys(jsonObj) { var keys = new Array(); for (var i in jsonObj) { keys.push(i); } return keys; } "
End Sub
Public Function DecodeJsonString(ByVal JsonString As String)
    Set DecodeJsonString = ScriptEngine.Eval("(" + JsonString + ")")
End Function
Public Function GetProperty(ByVal JsonObject As Object, ByVal propertyName As String) As Variant
    GetProperty = ScriptEngine.Run("getProperty", JsonObject, propertyName)
End Function
Public Function GetObjectProperty(ByVal JsonObject As Object, ByVal propertyName As String) As Object
    Set GetObjectProperty = ScriptEngine.Run("getProperty", JsonObject, propertyName)
End Function
Public Function GetKeys(ByVal JsonObject As Object) As String()
    Dim Length As Integer
    Dim KeysArray() As String
    Dim KeysObject As Object
    Dim Index As Integer
    Dim Key As Variant

    Set KeysObject = ScriptEngine.Run("getKeys", JsonObject)
    Length = GetProperty(KeysObject, "length")
    ReDim KeysArray(Length - 1)
    Index = 0
    For Each Key In KeysObject
        KeysArray(Index) = Key
        Index = Index + 1
    Next
    GetKeys = KeysArray
End Function
Kod:
Option Explicit

Sub calistir()
    Dim JsonString As String
    Dim JsonObject As Object
    Dim keys() As String
    Dim keys2() As String
    Dim value As Variant
    Dim i&, j&, sat&

    InitScriptEngine

    JsonString = Sheets("Sheet1").Range("A1").value
    Set JsonObject = DecodeJsonString(CStr(JsonString))
    keys = GetKeys(JsonObject)
  
    Set value = GetObjectProperty(JsonObject, keys(0))
    keys2 = GetKeys(value)
    sat = 1
  
    With Sheets("Sheet2")
    .Select
    .Cells.ClearContents
    For i = 0 To UBound(keys2)
        .Cells(sat, i + 2).value = keys2(i)
    Next i
        sat = 2
    For j = 0 To UBound(keys)
        .Cells(sat, 1).value = keys(j)
        Set value = GetObjectProperty(JsonObject, keys(j))
        For i = 0 To UBound(keys2)
            .Cells(sat, i + 2).value = GetProperty(value, keys2(i))
        Next i
        sat = sat + 1
    Next j
    .Rows(1).SpecialCells(xlCellTypeConstants).Font.Bold = True
    .Columns.AutoFit
      
    End With
  
End Sub
 

Ekli dosyalar

Son düzenleme:
Üst