• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Excel Haftasonu Kurları Yardım

Katılım
8 Haziran 2017
Mesajlar
21
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2019 TR 64Bit
Arkadaşlar Merhaba,
Excel dosyam kullandığım bir kod mantığı var.
Günlük doviz kurları hareketli olduğu için, ben bir gün öncesinin kurlarını alarak takip ediyorum. Mesela Excel tablomu açtığım bugün 06/02/2017 ise, tabloda " =BUGÜN()-1 " formülüyle, 05/02/2017 tarihindeki kurları alıyorum.

Yalnız şöyle bir problemim var. Eğer ki tarih haftasonu olursa, bende haftanın ilk iş gününde tablomu açarsam, 05.02.2017 pazartesi açtığımda bana -1 formülünde 04.02.2017 pazar tarihini verdiği için kur alanında " değer " hatası alıyorum. Formülü nasıl düzeltmeliyim ki, cumartesi pazar günlerini cuma gününe döndürsün ve ben pazartesi günü excel tablosunu açtığımda bana cuma gününün kurlarını versin.

Bu konuda yardımcı olabilirseniz sevinirim. Teşekkürler

Gün olarak: =BUGÜN()-1
Dolar Alış: =Webdoviz(BUGÜN();"usd";1)
Euro Alış: =Webdoviz(BUGÜN();"eur";1)
Parite: =B2/B1


Dosya linki
http://www.dosya.tc/server11/ocwhn6/07-_AKEM_Group_Nakit_Akim_Tablosu.rar.html
 
Formüllü cevabım yok ama makro koduna kırmızı bölümü ekleyince istenen sonucu veriyor.
Mavi bölümü (BUGÜN()-1) yazarsanız isterseniz silebilirsiniz.
Silmezseniz formülü böyle yazın (BUGÜN())

Kod:
DefVar E
Function Webdoviz(ByVal Tarih As Date, ByVal Dovtip As String, ByVal Tipi As Long) As Variant
Dim gun As String, ay As String, yil As String, path As String, kur As Double
Dim icerik As String, xmlhttp As Object, evn As Variant
Set xmlhttp = CreateObject("MSXML2.XMLHTTP")
Application.Volatile
Dovtip = UCase(Dovtip)


[COLOR="Blue"]Tarih = Tarih - 1[/COLOR]

[COLOR="Red"]If "Cumartesi" = Format(Tarih, "dddd") Then
Tarih = Tarih - 1
ElseIf "Pazar" = Format(Tarih, "dddd") Then
Tarih = Tarih - 2
End If
[/COLOR]


gun = Day(Tarih): ay = Month(Tarih): yil = Year(Tarih)
If Len(gun) = 1 Then gun = "0" & gun
If Len(ay) = 1 Then ay = "0" & ay
path = "http://www.tcmb.gov.tr/kurlar/" & yil & ay & "/" & gun & ay & yil & ".xml"
xmlhttp.Open "GET", path, False
xmlhttp.send "at"
If xmlhttp.Status = 200 Then
    icerik = xmlhttp.responseText
    temizlik = Split(icerik, "<Currency CrossOrder=")
    For y = 0 To UBound(temizlik)
        If temizlik(y) Like "*=""" & Dovtip & "*" Then
            sonuclar = Split(temizlik(y), "</CurrencyName>")
            evn1 = Split(sonuclar(1), "<ForexBuying>")
            evn2 = Split(sonuclar(1), "<ForexSelling>")
            evn3 = Split(sonuclar(1), "<BanknoteBuying>")
            evn4 = Split(sonuclar(1), "<BanknoteSelling>")
            Select Case Tipi
                Case 1: evn = Split(evn1(1), "</")
                Case 2: evn = Split(evn2(1), "</")
                Case 3: evn = Split(evn3(1), "</")
                Case 4: evn = Split(evn4(1), "</")
            End Select
            Exit For
        End If
    Next y
End If
'Kuruş hanesini benim gibi virgül kullananlar için
Webdoviz = Replace(evn(0), ".", ",")

'Kuruş hanesini nokta kullananlar için
'Webdoviz = evn(0)
End Function
 
çok teşekkür ederim ilginize harikasınız
 
Ufak bir bilgi vermek istedim:

Merkez Bankası tarafından günlük döviz ve efektif kurları, gün içerisinde saat 15:30'da yayınlanır. Yani, Pazartesi günü örneğin saat 13:00'de aldığınız kur, aslında bir önceki Cuma günü saat 15:30'da yayınlanan kurdur.

Benzer şekilde, örneğin Salı günü saat 14:00'de alınan kur, Pazartesi gününe aittir. Yine Salı günü saat 16:00'da alınan kur ise, Salı gününe aittir.

.
 
Geri
Üst