makroyla topla çarpım

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
merhabalar

forumda bazı örnekler var ama hepsi tek sütun için çalışmalar. ekteki dosyamda göreceğiniz gibi 2007 Eğitim kaydı sayfasından topla çarpım metoduyla alınan veriler (etkinlik değerlendirme notları) matris sayfasında listeleniyor. Yalnız liste uzun ve eğitim sayısı fazla olduğundan dosya yavaş çalışıyor. Makroyla tüm sütunları içerecek şekilde topla çarpımı nasıl yapabilirim?
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
dosyayı eklememişim özür dilerim....
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Aşağıdaki adreste topla.çarpım işleminin makro ile yapılmış bir örneği var. Belki size fikir verebilir.

http://www.excel.web.tr/showthread.php?t=40516&highlight=topla.%E7arp%FDm
vermiş olduğunuz linkteki dosyayı inceledim, istenen isimden kaç tane olduğunu veriyor. benim yapmak istediğimse, eğitim kayıtları sayfasında bulunan kayıtları topla çarpım ile tarayıp matris sayfasında oluşturduğum tabloyu makro haline getirerek hızlandırmak.burada fark her çalışanın aldığı her eğitime ait notu tek tabloda görmek. bunu yapabilirmiyiz?
 

Korhan Ayhan

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

Aşağıdaki kodu denermisiniz.

Kod:
Sub AKTAR()
    Set S1 = Sheets("2007-EĞİTİM KAYDI")
    Set S2 = Sheets("Matris")
    SON = S1.[A65536].End(3).Row
    S2.Select
    [D3:Y65536].ClearContents
    For X = 3 To [B65536].End(3).Row
    For Y = 4 To 25
    Cells(X, Y) = Evaluate("SUMPRODUCT(--('2007-EĞİTİM KAYDI'!H2:H" & SON & "=" & Cells(X, 2).Address(0, 0) & "),--('2007-EĞİTİM KAYDI'!G2:G" & SON & "=" & Cells(2, Y).Address(0, 0) & "),('2007-EĞİTİM KAYDI'!L2:L" & SON & "))")
    Next
    Next
    Set S1 = Nothing
    Set S2 = Nothing
    MsgBox "İŞLEMİNİZ TAMAMLANMIŞTIR.", vbInformation
End Sub
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
Selamlar,

Aşağıdaki kodu denermisiniz.

Kod:
Sub AKTAR()
    Set S1 = Sheets("2007-EĞİTİM KAYDI")
    Set S2 = Sheets("Matris")
    SON = S1.[A65536].End(3).Row
    S2.Select
    [D3:Y65536].ClearContents
    For X = 3 To [B65536].End(3).Row
    For Y = 4 To 25
    Cells(X, Y) = Evaluate("SUMPRODUCT(--('2007-EĞİTİM KAYDI'!H2:H" & SON & "=" & Cells(X, 2).Address(0, 0) & "),--('2007-EĞİTİM KAYDI'!G2:G" & SON & "=" & Cells(2, Y).Address(0, 0) & "),('2007-EĞİTİM KAYDI'!L2:L" & SON & "))")
    Next
    Next
    Set S1 = Nothing
    Set S2 = Nothing
    MsgBox "İŞLEMİNİZ TAMAMLANMIŞTIR.", vbInformation
End Sub
yazdığınız kod mükemmel bir biçimde çalıştı, çok teşekkür ederim sayın cost control. ancak Cells(X, 2).Address(0, 0) ve Cells(2, Y).Address(0, 0) bu kodlarda ne yaptığınız anlayamadım, açıklayabilirmisiniz?
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Sayın COST_CONTROL yerine ben bilgilendireyim.

Cells(X, 2).Address(0, 0)

Döngüde X değerine denk gelen satır numarası ile 2 nolu kolonun adresi.

Yani
Cells(X, 2).Address(0, 0)
X=3 ise

B3 hücresi referansını alır.

Address(1, 1) olsaydı
$B$3 (satır ve sütun sabitlenirdi) olurdu

Cells(2, Y).Address(0, 0) tam tersi

2 satır ile y' değişkenine denk gelen kolon numarasının adresi.

Y=3 ise
C2 refaransı alır.

Sub a()
For x = 1 To 5
aaa = Cells(x, 2).Address(1, 1)
Next
End Sub

kodlarını yazıp F8 ile çalıştırıp.
aaa'nın aldığı adreslere bakınız.
 

ockucukay

Altın Üye
Katılım
29 Aralık 2005
Mesajlar
862
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
02-07-2025
vermiş olduğunuz cevap için çok teşekkür ederim, çok bilgilendirici oldu inanın.
 
Üst