Yuvarlama makrosu

kadir78

Altın Üye
Katılım
6 Nisan 2016
Mesajlar
227
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
30-12-2026
İyi günler. Yuvarlama formülünü makro kodlarına çeviremedim. Yardım edermisiniz.

=YUVARLA((EĞER(EHATALIYSA($R5/$Q5*U5);0;($R5/$Q5*U5)));0)

V sütununda 1200 satırda bu formül var bu formülleri makro kodlarına çeviremedim.
 

Cengiz Demir

Altın Üye
Katılım
29 Haziran 2018
Mesajlar
605
Excel Vers. ve Dili
Office 365 TR (32 Bit)
Altın Üyelik Bitiş Tarihi
05-04-2025
Tam olarak ne istiyorsunuz ? V sütunundaki sonuçlar formülle değil de makro ile mi yazılacak ?
Eğer öyleyse, bu kodlar işinize yarar sanırım.
Formüller 5. satırdan değil de başka satırdan başlıyorsa; For i = 5 To 1200 kodunu isteğinize göre düzenlersiniz.

C++:
Dim i, y, r, q, u As Integer


Sub Hesapla()

For i = 5 To 1200

r = Cells(i, "R"): q = Cells(i, "Q"): u = Cells(i, "U")
    
    If q <> 0 Then
    
        y = Round((r / q) * u, 0)
      
         Else: y = 0
    
    End If

Cells(i, "V") = y

Next i

End Sub
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Hepsini ayrı ayrı deklare etmek gerekir....

dim i as integer, y as integer, r as integer ..... gibi.

Ayrıca bilgi için;


.
 

kadir78

Altın Üye
Katılım
6 Nisan 2016
Mesajlar
227
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
30-12-2026
Tam olarak ne istiyorsunuz ? V sütunundaki sonuçlar formülle değil de makro ile mi yazılacak ?
Eğer öyleyse, bu kodlar işinize yarar sanırım.
Formüller 5. satırdan değil de başka satırdan başlıyorsa; For i = 5 To 1200 kodunu isteğinize göre düzenlersiniz.

C++:
Dim i, y, r, q, u As Integer


Sub Hesapla()

For i = 5 To 1200

r = Cells(i, "R"): q = Cells(i, "Q"): u = Cells(i, "U")
   
    If q <> 0 Then
   
        y = Round((r / q) * u, 0)
     
         Else: y = 0
   
    End If

Cells(i, "V") = y

Next i

End Sub
Teşekkür ederim sağolun.
 

Cengiz Demir

Altın Üye
Katılım
29 Haziran 2018
Mesajlar
605
Excel Vers. ve Dili
Office 365 TR (32 Bit)
Altın Üyelik Bitiş Tarihi
05-04-2025
Teşekkürler bilgilendirme için üstad ;)

Hepsini ayrı ayrı deklare etmek gerekir....

dim i as integer, y as integer, r as integer ..... gibi.

Ayrıca bilgi için;


.
 

Cengiz Demir

Altın Üye
Katılım
29 Haziran 2018
Mesajlar
605
Excel Vers. ve Dili
Office 365 TR (32 Bit)
Altın Üyelik Bitiş Tarihi
05-04-2025
Rica ederim.
Korhan Ayhan üstadın önerisine de bir bakın derim.
Ben for next döngülerini kullanırım. Ama gözlemlediğime göre with döngüleri daha verimli oluyor gibi.
Bundan sonra ihtiyacım olduğunda, ben de döngüler için; with kullanımını araştırmayı düşünüyorum.

İleride başka kodlama yaparken, işinize yarayabilir sizin de.

Teşekkür ederim sağolun.
 
Son düzenleme:

kadir78

Altın Üye
Katılım
6 Nisan 2016
Mesajlar
227
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
30-12-2026
Rica ederim.
Korhan Ayhan üstadın önerisine de bir bakın derim.
Ben for next döngülerini kullanırım. Ama gözlemlediğime göre with döngüleri daha verimli oluyor gibi.
Bundan sonra ihtiyacım olduğunda, ben de döngüler için; with kullanımını araştırmayı düşünüyorum.

İleride başka kodlama yaparken, işinize yarayabilir sizin de.
"Bu sayfaya erişim veya bu işlemi gerçekleştirme izniniz yok." Uyarı verdi
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,298
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Forumun ilgili bölümüne erişim için altın üyelik gereklidir.

Benim önerdiğim yöntemde formül belirlenen alana tek seferde yazdırılıp sonrasında değere çevrilmektedir.

Sizin formülü aşağıdaki gibi uygulayabilirsiniz. Hücre aralığını kendinize göre revize edebilirsiniz.

C++:
Option Explicit

Sub Test()
    With Range("V5:V1204")
        .Formula = "=ROUND(IFERROR($R5/$Q5*U5,0),0)"
        .Value = .Value
    End With
End Sub
 

kadir78

Altın Üye
Katılım
6 Nisan 2016
Mesajlar
227
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
30-12-2026
Forumun ilgili bölümüne erişim için altın üyelik gereklidir.

Benim önerdiğim yöntemde formül belirlenen alana tek seferde yazdırılıp sonrasında değere çevrilmektedir.

Sizin formülü aşağıdaki gibi uygulayabilirsiniz. Hücre aralığını kendinize göre revize edebilirsiniz.

C++:
Option Explicit

Sub Test()
    With Range("V5:V1204")
        .Formula = "=ROUND(IFERROR($R5/$Q5*U5),0),0)"
        .Value = .Value
    End With
End Sub
Korhan hocam
5 yıllık Altın Üyelik için ödemeyi yaptım aktivasyonu bekliyorum Sağolun
 

kadir78

Altın Üye
Katılım
6 Nisan 2016
Mesajlar
227
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
30-12-2026
Forumun ilgili bölümüne erişim için altın üyelik gereklidir.

Benim önerdiğim yöntemde formül belirlenen alana tek seferde yazdırılıp sonrasında değere çevrilmektedir.

Sizin formülü aşağıdaki gibi uygulayabilirsiniz. Hücre aralığını kendinize göre revize edebilirsiniz.

C++:
Option Explicit

Sub Test()
    With Range("V5:V1204")
        .Formula = "=ROUND(IFERROR($R5/$Q5*U5),0),0)"
        .Value = .Value
    End With
End Sub
Korhan hocam
Run-time error '1004' Hatasını verdi
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,298
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
#11 nolu mesajımı revize ettim. Yazarken bir parantez fazla olmuş. Ondan dolayı hata almışsınız.
 

Cengiz Demir

Altın Üye
Katılım
29 Haziran 2018
Mesajlar
605
Excel Vers. ve Dili
Office 365 TR (32 Bit)
Altın Üyelik Bitiş Tarihi
05-04-2025
Teşekkürler. Haluk üstad belirttiği linkde, bu tür değişken tipinden de bahsetmiş.

Tanımlama işlemlerini epey kolaylaştırabilecek türde yöntemlermiş. ;)

VBA' de pek bilinmeyen veya unutulan ama çok kullanışlı değişken tanımlama özelliği var.

Bakınız... Deftype statements

.
 
Üst