Vba ile formül yazdırma

Katılım
21 Mart 2019
Mesajlar
35
Excel Vers. ve Dili
Office 2016, 64 bit, türkçe
Arkadaşlar merhaba, formül ile istediğim işlemleri yapabiliyorum ancak =@EĞER(A6="";"";Code128(A6)) formülünü macro olarak yazmam gerekiyor.

Bunun kod ile yazımı konusunda yardımcı olabilirseniz for döngüsü içerisinde istediğim kısımlara yazdırabilirim. Yardımlarınız için teşekkür ederim
 

Erkan Akayay

Altın Üye
Katılım
8 Aralık 2006
Mesajlar
405
Excel Vers. ve Dili
Ofis 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2028
A sütunu boşşa B sütununa formül yazdırıyor. 10 satırlık bir örnek.
Kod:
Sub Test()
For i = 1 To 10
    If Cells(i, 1) = "" Then
        Cells(i, 2).Formula = "=IF(A" & i & "=""""" & ",Code128(A" & i & "))"
    End If
Next
End Sub
 
Katılım
21 Mart 2019
Mesajlar
35
Excel Vers. ve Dili
Office 2016, 64 bit, türkçe
Kod:
Sub Test()
    For i = 1 To 10
        For k = 1 To 10
            If Cells(i, 1) = "" Then
            Cells(i, 2).Formula = "=IF(k" & i & "=""""" & ",Code128(k" & i & "))"
            End If
        Next
    Next
End Sub
Bu şekilde yapıp hücre isminde A yerine birden ona kadar döngü yapabilir miyim?
 

Erkan Akayay

Altın Üye
Katılım
8 Aralık 2006
Mesajlar
405
Excel Vers. ve Dili
Ofis 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2028
Yaptığınız işlemin mantığını anlayamadım.
Bu döngüde eğerin koşulunun yerine gelmesi mümkün değil. Zaten bu haliyle eğer formülü çalışmaz.
Tam olarak ne yapmak istediğinizi bir örnek dosyada açıklarsanız yardımcı oluruz.
 
Katılım
21 Mart 2019
Mesajlar
35
Excel Vers. ve Dili
Office 2016, 64 bit, türkçe
hocam tekrardan rahatsız ediyorum ama beceremedim. yapmak istediğim döngü şu; A5,A12,A19,A26,A33,A40,A47,A54 ardından D5,D12,D19,D26,D33,D40,D47,D54 hücrelerine macro ile =@EĞER(A6="";"";Code128(A6)) bu formülü yazmak. formül içerisindeki hücre her zaman +1 olacak. A6,A13,A20 gibi. Döngü ile yapmak isteme nedenim şu. A sütunu, D sütunu, G sütunu, j sütunu diye +3 şeklinde 100 e kadar döngü olacak. umarım açıklayıcı olmuştur. Şimdiden teşekkür ederim
 
Katılım
21 Mart 2019
Mesajlar
35
Excel Vers. ve Dili
Office 2016, 64 bit, türkçe
Kod:
For s = 1 To 100

      
    For Z = 1 To 8
      
            If Cells(s, h + 1) = "" Then
            Cells(s, h).Formula = Code128(s, h)
            End If
       h = h + 7
    Next Z
  
    s = s + 3
    h = 5

Next s
s = 1
ben böyle yaptım ama hata aldım, belki siz hatayı tespit edebilirsiniz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

C++:
Option Explicit

Sub Add_Formula()
    Dim X As Integer
    For X = 1 To 100 Step 3
        With Range("A5,A12,A19,A26,A33,A40,A47,A54").Offset(, X - 1)
            .Formula = "=IF(R[1]C="""","""",Code128(R[1]C))"
        End With
    Next
End Sub
 

Erkan Akayay

Altın Üye
Katılım
8 Aralık 2006
Mesajlar
405
Excel Vers. ve Dili
Ofis 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2028
Döngülerde step kullanılabilir

For i= 1 to 100 Step 5

i otomatikman 5 artar.

Not : Korhan Bey cevaplamış.
 
Katılım
21 Mart 2019
Mesajlar
35
Excel Vers. ve Dili
Office 2016, 64 bit, türkçe
Deneyiniz.

C++:
Option Explicit

Sub Add_Formula()
    Dim X As Integer
    For X = 1 To 100 Step 3
        With Range("A5,A12,A19,A26,A33,A40,A47,A54").Offset(, X - 1)
            .Formula = "=IF(R[1]C="""","""",Code128(R[1]C))"
        End With
    Next
End Sub
Hocam bu tam istediğim gibi çalıştı. çok teşekkür ederim.

sadece şunu ekleyebilir misiniz acaba
A5,A12,A19,A26,A33,A40,A47,A54
D5,D12,D19,D26,D33,D40,D47,D54
G5,G12,G19,G26,G33,G40,G47,G54
gibi 100 e kadar döngüde olması gerekiyor. Bu kod sadece A5,A12,A19,A26,A33,A40,A47,A54 hücreleri için çalıştı
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Diğer sütunları kontrol ediniz..
 
Katılım
21 Mart 2019
Mesajlar
35
Excel Vers. ve Dili
Office 2016, 64 bit, türkçe
Deneyiniz.

C++:
Option Explicit

Sub Add_Formula()
    Dim X As Integer
    For X = 1 To 100 Step 3
        With Range("A5,A12,A19,A26,A33,A40,A47,A54").Offset(, X - 1)
            .Formula = "=IF(R[1]C="""","""",Code128(R[1]C))"
        End With
    Next
End Sub
Korhan hocam
With Range("A5,A12,A19,A26,A33,A40,A47,A54").Offset(, X ) yaptığımda A5 hücresi hariç bütün sütunlar çalışıyor. neden olabileceği ile ilgili fikriniz var mı? veya sadece A5 için ek bir satır eklenebilir mi?
 
Katılım
21 Mart 2019
Mesajlar
35
Excel Vers. ve Dili
Office 2016, 64 bit, türkçe
çok çok teşekkür ederim çok iyi çalışıyor. kodu anlamak için çalışacağım mutlaka. Sağolun
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Basitçe açıklarsak;

For X = 1 To 100 Step 3

Üst satırda işlem 1. sütundan başlayarak 100. sütuna kadar 3 sütun atlayarak işlem yap diyoruz.

Aşağıdaki satırda ise A sütununda bazı hücreler tanımlıyoruz ve OFFSET (Kaydır) komutu ile hücrelere işlem yapmayı hedefliyoruz.

With Range("A5,A12,A19,A26,A33,A40,A47,A54").Offset(, X - 1)

Kaydırma parametresi olarak ise X değişkenini kullanıyoruz. İlk formül yazdırmak istediğimiz alan A sütunu olduğu için X-1 yaparak işleme başlıyoruz. Çünkü işlem ilk olarak A sütununda olacağı için burada kaydırma yapılmaması gerekiyor.

Aşağıdaki satırda ise R1C1 stilini kullanarak hücre adreslerini belirtiyoruz.

.Formula = "=IF(R[1]C="""","""",Code128(R[1]C))"
 
Üst