Zamenjava številčenja ter +1

Pomoč pri delu z MS Excelom
Odgovori
kingo
Prispevkov: 21
Pridružen: Ne Jan 10, 2010 5:04 pm

Zamenjava številčenja ter +1

Odgovor Napisal/-a kingo »

Pozdravljeni,

verjamem, da bi z rešitvijo tega problema lahko še komu pomagal kasneje. IP TV lista ima za vse kanale po default-u vpisano -1. Se da kako v excelu to preprosto zamenjati na način, da bi se -1 zamenjalo v 0, 1, 2.

Primer (spodaj): (prvi navedeni za SLO 1) <Chan>-1</Chan> => zamenjati v 0, nato (drugi navedeni za SLO 2) <Chan>-1</Chan> => zamenjati v 1, nato (tretji navedeni za Planet TV) <Chan>-1</Chan> => zamenjati v 2 itd.

Hvala vnaprej za kakršenkoli nasvet oz. pomoč!


<Ip>xxxx.xx.x.xx:xxxxx</Ip>
<Chan>-1</Chan>
<Name>SLO 1</Name>
<Group>Slovenski;HD</Group>
<Audio />
<Fav>false</Fav>
<Logo>SLO_1_HD.png</Logo>
<EpgId>SLO 1 HD</EpgId>
<Skip>false</Skip>
<Locked>false</Locked>
</Menu>
<Menu>
<Ip>xxxx.xx.x.xx:xxxxx</Ip>
<Chan>-1</Chan>
<Name>SLO 2</Name>
<Group>Slovenski;HD</Group>
<Audio />
<Fav>false</Fav>
<Logo>SLO_2_HD.png</Logo>
<EpgId>SLO 2 HD</EpgId>
<Skip>false</Skip>
<Locked>false</Locked>
</Menu>
<Menu>
<Ip>xxxx.xx.x.xx:xxxxx</Ip>
<Chan>-1</Chan>
<Name>Planet TV</Name>
<Group>Slovenski;HD</Group>
<Audio />
<Fav>false</Fav>
<Logo>Planet_TV_HD.png</Logo>
<EpgId>Planet TV HD</EpgId>
<Skip>false</Skip>
<Locked>false</Locked>
</Menu>
<Menu>
<Ip>xxxx.xx.x.xx:xxxxx</Ip>
<Chan>-1</Chan>
<Name>Planet TV 2</Name>
<Group>Slovenski;HD</Group>
<Audio />
<Fav>false</Fav>
<Logo>Planet_2_HD.png</Logo>
<EpgId>Planet TV 2 HD</EpgId>
<Skip>false</Skip>
<Locked>false</Locked>
</Menu>
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Re: Zamenjava številčenja ter +1

Odgovor Napisal/-a admin »

Pozdravljeni,

Med informatiki velja, da se XML datoteke ne smejo obdelovati kot tekstovne datoteke, temveč kot XML, vendar za vaš preprost primer vam bom tudi podal preprosto rešitev. V vašem primeru je algoritem namreč skrajno preprost:
  1. Preberi vhodno datoteko
  2. Števec postavi na 1
  3. Dokler v besedilu najdeš <Chan>-1</Chan>, ga zamenjaj s trenutnim števcem, števec povečaj in poskusi ponovno
  4. Rezultat zapiši v datoteko
Ta preprost algoritem sem vam tudi zapisal. Za konkretni primer seveda zamenjajte imeni vhodne (vhod = "C:\razvoj\programi.xml") in izhodne datoteke (izhod = "C:\razvoj\programi-urejeni.xml")

Koda: Izberi vse

Function BeriDatoteko(imeDatoteke As String) As String
  Dim FSO  As Object: Set FSO = CreateObject("Scripting.FileSystemObject")
  
  Dim TSO As Object: Set TSO = FSO.OpenTextFile(imeDatoteke)
  BeriDatoteko = TSO.ReadAll
  TSO.Close
  Set TSO = Nothing
  
  Set FSO = Nothing
End Function

Sub ZapisiVDatoteko(imeDatoteke As String, vsebina As String)
  Dim FSO  As Object: Set FSO = CreateObject("Scripting.FileSystemObject")
  
  Set dat = FSO.CreateTextFile(imeDatoteke)
  dat.Write vsebina
  dat.Close
 
  Set FSO = Nothing
End Sub

Sub PopraviXmlDatoteko()
    Dim vhod As String: vhod = "C:\razvoj\programi.xml"
    Dim izhod As String: izhod = "C:\razvoj\programi-urejeni.xml"
    
    Dim vsebina As String: vsebina = BeriDatoteko(vhod)
    
    Dim stevec As Integer: stevec = 1
    While (InStr(vsebina, "<Chan>-1</Chan>") > 0)
        vsebina = Replace(vsebina, "<Chan>-1</Chan>", "<Chan>" & stevec & "</Chan>", 1, 1)
        stevec = stevec + 1
    Wend

    ZapisiVDatoteko izhod, vsebina
End Sub
lp,
Matjaž Prtenjak
Administrator
kingo
Prispevkov: 21
Pridružen: Ne Jan 10, 2010 5:04 pm

Re: Zamenjava številčenja ter +1

Odgovor Napisal/-a kingo »

Najlepša hvala!!!!! Lep pozdrav!
Odgovori