• DİKKAT

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

userform'da girilen 2 değer arasındakileri tablodan bulup toplama

Katılım
29 Nisan 2013
Mesajlar
53
Excel Vers. ve Dili
Office 2013, İngilizce
Merhaba arkadaşlar,

Benim excelde bir tablom var.Kullanıcı userform'da minimum ve maximum değerleri girecek ve o değerler arasındakiler toplanmış olarak userformda görünecek.

İlgili çalışmayı linkte gönderiyorum ama basitçe de anlatmaya çalışayım.

http://dosya.co/5obnrlwz2chl/default.xlsm.html

A B C D
10 2 20 120
20 2 40
30 2 60
40 2 80

A sütunu kullanıcının userformdan gireceği değerler olsun.Örneğin maximum olarak 30u minimum olarak da 10u girdi.C sütunu da A ve B sütunlarının çarpımını versin.D sütunu da bu iki değer arasında kalan sayıların toplamı olsun.10 ve 30 seçilmişti yani 60+40+20=120.

Böyle bir macro asıl hazırlayabilirim?
 
. . .

Sayfa üzerindeki işlemleri formülle mi yaptıracaksınız yoksa
tüm işlemler userform üzerinde butonu tıklayınca mı olacak.

. . .
 
. . .

Ekteki dosyanız B sütunundan başlıyor. Aşağıdaki kodları deneyiniz.
İstenilen farklı birşey ise örneği biraz daha ayrıntılandırınız...

Kod:
Private Sub CommandButton1_Click()
    Range("E3:E" & Rows.Count).ClearContents
    For i = 3 To Cells(Rows.Count, "B").End(3).Row
        If Cells(i, "B") <> "" Then
            Cells(i, "E") = Cells(i, "B") * Cells(i, "C") * Cells(i, "D")
            If Cells(i, "B") >= TextBox1.Value * 1 And _
                Cells(i, "B") <= TextBox2.Value * 1 Then
                topla = topla + Cells(i, "E")
            End If
        End If
    Next i
    TextBox3.Value = topla
    topla = Empty
End Sub

. . .
 
. . .

Ekteki dosyanız B sütunundan başlıyor. Aşağıdaki kodları deneyiniz.
İstenilen farklı birşey ise örneği biraz daha ayrıntılandırınız...

Kod:
Private Sub CommandButton1_Click()
    Range("E3:E" & Rows.Count).ClearContents
    For i = 3 To Cells(Rows.Count, "B").End(3).Row
        If Cells(i, "B") <> "" Then
            Cells(i, "E") = Cells(i, "B") * Cells(i, "C") * Cells(i, "D")
            If Cells(i, "B") >= TextBox1.Value * 1 And _
                Cells(i, "B") <= TextBox2.Value * 1 Then
                topla = topla + Cells(i, "E")
            End If
        End If
    Next i
    TextBox3.Value = topla
    topla = Empty
End Sub



. . .


Max 30 min 10 giriyorum sadece 3. ve 4. satırdaki değerleri hesaplıyor. Kodda i'yi neden 3 ten başlattınız onu anlamadım.
 
. . .

Bendeki işlem sonucu şu şekilde;

Tablodaki verileriniz 3.satırdan başladığı için i=3 yaparak
bu satırdan kontrol etmeye başlıyoruz.

pXqAAL.png


. . .
 
. . .

Bendeki işlem sonucu şu şekilde;

Tablodaki verileriniz 3.satırdan başladığı için i=3 yaparak
bu satırdan kontrol etmeye başlıyoruz.

pXqAAL.png


. . .

Teşekkür ederim şimdi oldu ama benim orijinal userformda textbox a değerlerin toplamı yazmıyor. Ondalıklı sayıları toplarken ayrı bir format mı gerekiyor o yüzden olabilir mi?
 
. . .

Rakamları kuruşlu olarak değiştirerek test ettim. Textbox3 e toplam geliyor...

. . .
 
Son düzenleme:
. . .

Ekteki dosyanız B sütunundan başlıyor. Aşağıdaki kodları deneyiniz.
İstenilen farklı birşey ise örneği biraz daha ayrıntılandırınız...

Kod:
Private Sub CommandButton1_Click()
    Range("E3:E" & Rows.Count).ClearContents
    For i = 3 To Cells(Rows.Count, "B").End(3).Row
        If Cells(i, "B") <> "" Then
            Cells(i, "E") = Cells(i, "B") * Cells(i, "C") * Cells(i, "D")
            If Cells(i, "B") >= TextBox1.Value * 1 And _
                Cells(i, "B") <= TextBox2.Value * 1 Then
                topla = topla + Cells(i, "E")
            End If
        End If
    Next i
    TextBox3.Value = topla
    topla = Empty
End Sub

. . .

Evet ben de çalıştırdım bu kodda ondalık sayıları topluyor.Benim yazdığım kodda tek fark;

Cells(i, "E") = Cells(i, "B") * Cells(i, "C") * Cells(i, "D")

yerine

Cells(i, "E") = TextBox4.value * TextBox5.Value * ComboBox1.Value

şeklinde olması.Excel datasheetinde "E" sütunana yazdırıyor sonuçları ama toplamın sonucunu userform'daki textbox'a yazmıyor.
 
Tamam hallettim sorunu bende extradan bir satır kod daha vardı end if i yanlış yere koymuşum, yardımınız için çok teşekkürler :)
 
Geri
Üst