• DİKKAT

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

Butona ile hücredeki sayıyı artırma

  • Konbuyu başlatan Konbuyu başlatan H3V3S
  • Başlangıç tarihi Başlangıç tarihi
Katılım
4 Mart 2020
Mesajlar
42
Excel Vers. ve Dili
Excel 2013
A1, A2, A3, A4 hücrelerinde isimler var, b1, b2, b3, b4 hücrelerinde ise isimlere ait sayılar var. E1 ve E2 hücrelerinde ise A sütunundaki isimlerden bazıları var, bir buton ekleyip butona bastığım zaman E1 ve E2 hücrelerinde yazan isimleri A sütununda bulup karşısında yani B sütununda yazan sayıyı bir artıracak, böyle bir makro yazabilirmiyiz yardımlarınız için şimdiden teşekkür ederim
 
Aşağıdaki makroyu kullanabilirsiniz:

PHP:
Sub ekle()
For Each hucre In [A1:A4]
    If WorksheetFunction.CountIf([E1:E2], hucre.Value) > 0 Then
        hucre.Offset(0, 1) = hucre.Offset(0, 1) + 1
    End If
Next
End Sub
 
Kodları eksik kopyalamışsınızdır. Bende sorunsuz çalışıyor.
 
Dosyayı hatalı haliyle paylaşır mısınız?
 
İyi çalışmalar.
 
Günaydın. İlk mesajınıza ve örnek dosyanıza göre neden olmadığını açıklamaya çalışayım:

A1, A2, A3, A4 hücrelerinde isimler var, b1, b2, b3, b4 hücrelerinde ise isimlere ait sayılar var.

Kodun For Each hucre In [A1:A4] kısmı isteğiniz üzere A1:A4 aralığını dikkate alıyor. Gönderdiğiniz dosyada ise verileriniz A1:A4 arasında değil A4:A9 arasında.

E1 ve E2 hücrelerinde ise A sütunundaki isimlerden bazıları var,

Kodun If WorksheetFunction.CountIf([E1:E2], hucre.Value) > 0 Then kısmı da bu isteğiniz karşılıyor. Gönderdiğiniz dosyada E1 hücresinde Nöbet listesi, E2 hücresinde ise Nizamiye ifadesi var. E sütununun kalanında tarihler varken; kontrol edileceğini tahmin ettiğim isimler ise F3:F16 arasında.

bir buton ekleyip butona bastığım zaman E1 ve E2 hücrelerinde yazan isimleri A sütununda bulup karşısında yani B sütununda yazan sayıyı bir artıracak, böyle bir makro yazabilirmiyiz yardımlarınız için şimdiden teşekkür ederim

Kodun tamamı zaten bu işi yapıyor. İlk mesajınızda belirttiğiniz gibi bir dosya hazırlarsanız bu makronun düzgün çalıştığını göreceksiniz.

Kısacası benim verdiğim makro, tam olarak istediğiniz işlemi yapıyor ama siz nedense isteğinizi dosyanıza göre anlatmamış ya da dosyanızı sonradan değiştirmişsiniz.

Dosyanıza göre olması gereken kod aşağıdaki gibidir:

PHP:
Sub recep()
sonA = WorksheetFunction.Max(4, Cells(Rows.Count, "A").End(3).Row)
sonF = WorksheetFunction.Max(4, Cells(Rows.Count, "F").End(3).Row)
For Each hucre In Range("A4:A" & sonA)
    If WorksheetFunction.CountIf(Range("F4:F" & sonF), hucre.Value) > 0 Then
        hucre.Offset(0, 1) = hucre.Offset(0, 1) + 1
    End If
Next
End Sub

Lütfen bundan sonraki sorularınızı asıl dosyanıza göre sorun. Bu konuda söz konusu olmasa da örnek dosyalarınızı asıl dosyanızla aynı yapıda hazırlayın.
 
Son düzenleme:
Günaydın. İlk mesajınıza ve örnek dosyanıza göre neden olmadığını açıklamaya çalışayım:



Kodun For Each hucre In [A1:A4] kısmı isteğiniz üzere A1:A4 aralığını dikkate alıyor. Gönderdiğiniz dosyada ise verileriniz A1:A4 arasında değil A4:A9 arasında o)



Kodun If WorksheetFunction.CountIf([E1:E2], hucre.Value) > 0 Then kısmı da bu isteğiniz karşılıyor. Gönderdiğiniz dosyada E1 hücresinde Nöbet listesi, E2 hücresinde ise Nizamiye ifadesi var. Kontrol E sütununun kalanında tarihler varken kontrol edileceğini tahmin ettiğim isimler ise F3:F16 arasında.



Kodun tamamı zaten bu işi yapıyor. İlk mesajınızda belirttiğiniz gibi bir dosya hazırlarsanız bu makronun düzgün çalıştığını göreceksiniz.

Kısacası benim verdiğim makro tam olarak istediğiniz işlemi yapıyor ama siz nedense isteğinizi dosyanıza göre anlatmamış ya da dosyanızı sonradan değiştirmişsiniz.

Dosyanıza göre olması gereken kod aşağıdaki gibidir:

PHP:
Sub recep()
sonA = WorksheetFunction.Max(4, Cells(Rows.Count, "A").End(3).Row)
sonF = WorksheetFunction.Max(4, Cells(Rows.Count, "F").End(3).Row)
For Each hucre In Range("A4:A" & sonA)
    If WorksheetFunction.CountIf(Range("F4:F" & sonF), hucre.Value) > 0 Then
        hucre.Offset(0, 1) = hucre.Offset(0, 1) + 1
    End If
Next
End Sub

Lütfen bundan sonraki sorularınızı asıl dosyanıza göre sorun. Bu konuda söz konusu olmasa da örnek dosyalarınızı asıl dosyanızla aynı yapıda hazırlayın.
Teşekkür ederim sağolun yardımınız için
 
Aşağıdaki makroyu kullanabilirsiniz:

PHP:
Sub ekle()
For Each hucre In [A1:A4]
    If WorksheetFunction.CountIf([E1:E2], hucre.Value) > 0 Then
        hucre.Offset(0, 1) = hucre.Offset(0, 1) + 1
    End If
Next
End Sub
Hocam peki karşılaştırılan isimlerden bir kez varsa 1 iki kez varsa 2 ekleme nasıl yapılabilir
 
Aşağıdaki makroyu kullanabilirsiniz:

PHP:
Sub ekle()
For Each hucre In [A1:A4]
    If WorksheetFunction.CountIf([E1:E2], hucre.Value) > 0 Then
        hucre.Offset(0, 1) = hucre.Offset(0, 1) + 1
    End If
Next
End Sub
Hocam peki karşılaştırılan isim bir tane ise 1 iki tane ise 2 ekleme nasil yapilabilir
 
Günaydın. İlk mesajınıza ve örnek dosyanıza göre neden olmadığını açıklamaya çalışayım:



Kodun For Each hucre In [A1:A4] kısmı isteğiniz üzere A1:A4 aralığını dikkate alıyor. Gönderdiğiniz dosyada ise verileriniz A1:A4 arasında değil A4:A9 arasında.



Kodun If WorksheetFunction.CountIf([E1:E2], hucre.Value) > 0 Then kısmı da bu isteğiniz karşılıyor. Gönderdiğiniz dosyada E1 hücresinde Nöbet listesi, E2 hücresinde ise Nizamiye ifadesi var. E sütununun kalanında tarihler varken; kontrol edileceğini tahmin ettiğim isimler ise F3:F16 arasında.



Kodun tamamı zaten bu işi yapıyor. İlk mesajınızda belirttiğiniz gibi bir dosya hazırlarsanız bu makronun düzgün çalıştığını göreceksiniz.

Kısacası benim verdiğim makro, tam olarak istediğiniz işlemi yapıyor ama siz nedense isteğinizi dosyanıza göre anlatmamış ya da dosyanızı sonradan değiştirmişsiniz.

Dosyanıza göre olması gereken kod aşağıdaki gibidir:

PHP:
Sub recep()
sonA = WorksheetFunction.Max(4, Cells(Rows.Count, "A").End(3).Row)
sonF = WorksheetFunction.Max(4, Cells(Rows.Count, "F").End(3).Row)
For Each hucre In Range("A4:A" & sonA)
    If WorksheetFunction.CountIf(Range("F4:F" & sonF), hucre.Value) > 0 Then
        hucre.Offset(0, 1) = hucre.Offset(0, 1) + 1
    End If
Next
End Sub

Lütfen bundan sonraki sorularınızı asıl dosyanıza göre sorun. Bu konuda söz konusu olmasa da örnek dosyalarınızı asıl dosyanızla aynı yapıda hazırlayın.
Hocam vaerilerimiz F3:F16 arasında değilde F2:G100 arasında ise nasıl değişiklik yaparız
 
Geri
Üst