Makro ile nasıl formülize edilebilir?

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,897
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
=(ORTALAMA(E9:E12)-KESMENOKTASI(C9:C12;B9:B12))/EÐİM(C9:C12;B9:B12)*(E1/E2)*(1/B3)*100


gibi bir ifade makro ile nasıl yazılabilir ortalama,kesmenoktası ve eğim yerine hangi ifadeler kullanılıp ve nasıl formülüze edilebilir.

E9 TextBox1
E10 TextBox2
E11 TextBox3
E12 TextBox4
C9 TextBox5
C10 TextBox6
C11 TextBox7
C12 TextBox8
B9 TextBox9
B10 TextBox10
B11 TextBox11
B12 TextBox12
E1 TextBox13
E2 TextBox14
B3 TextBox15


Yani
=(ORTALAMA(TextBox1:TextBox4)-KESMENOKTASI(TextBox5:TextBox8;TextBox9:TextBox12))/EÐİM(TextBox5:TextBox8;TextBox9:TextBox12)*(TextBox13/TextBox14)*(1/TextBox15)*100

gibi nasıl ifade edebilirim

ORTALAMA(TextBox1:TextBox4) derken TextBox1,TextBox2,TextBox3,TextBox4'larda bulunan değerlerin ortalamasını kasdediyorum. Aynı durumlar KESMENOKTASI ve EÐİM içinde geçerli..

İlginiz ve yardımlarınız için teşekkürler.
 

Mahmut Bayram

Özel Üye
Katılım
25 Haziran 2005
Mesajlar
1,778
Excel Vers. ve Dili
2016 Excel Tr
[vb:1:8657dc6723]=(AVERAGE(TextBox1:TextBox4)-INTERCEPT(TextBox5:TextBox8,TextBox9:TextBox12))/SLOPE(TextBox5:TextBox8,TextBox9:TextBox12)*(TextBox13/TextBox14)*(1/TextBox15)*100[/vb:1:8657dc6723]
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,897
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
Teşekkürler Mahmut Bey,ellerinize sağlık
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,897
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
k = (TextBox1 / TextBox2) * 10 ^ 6 * (TextBox4 / TextBox3)
Sonuc =(AVERAGE(TextBox19:TextBox23)-INTERCEPT(TextBox14:TextBox18,TextBox9:TextBox13))/SLOPE(TextBox14:TextBox18,TextBox9:TextBox13)*(TextBox3/TextBox4)*(1/k)*100

: ayıracını kabul etmiyor acaba benmi hata yapıyorum yani AVERAGE(TextBox19:TextBox23) da TextBox19 ile TextBox23 arasındaki ayıracı kabul etmiyor. VBA'da aralık excel uygulamasındaki gibimidir yani B7:B12 gibimidir.
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,897
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
Acaba

k = (TextBox1 / TextBox2) * 10 ^ 6 * (TextBox4 / TextBox3)
Sonuc = (Average([TextBox19:TextBox23]) - Intercept([TextBox14:TextBox18,TextBox9:TextBox13])) / Slope([TextBox14:TextBox18,TextBox9:TextBox13]) * (TextBox3 / TextBox4) * (1 / k) * 100
böylemi olması gerekiyor.
 

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
Merhaba;

Þöyle ufak bir örnekte deneyin önce isterseniz.

UserForm üzerinde 4 adet TextBox, 1 de CommandButton1 yerleştirin ve ...

Kod:
DefDbl V
'
Private Sub CommandButton1_Click()
    Dim Intrcpt As Double, SlopeR As Double
    Val1 = TextBox1.Value
    Val2 = TextBox2.Value
    Val3 = TextBox3.Value
    Val4 = TextBox4.Value
    ValAv = WorksheetFunction.Average(Val1, Val2, Val3, Val4)
    MsgBox ValAv
    '
    Arr1 = Array(Val1, Val2)
    Arr2 = Array(Val3, Val4)
    '
    Intrcpt = WorksheetFunction.Intercept(Arr1, Arr2)
    MsgBox Intrcpt
    '
    SlopeR = WorksheetFunction.Slope(Arr1, Arr2)
    MsgBox SlopeR
End Sub
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,897
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
Bu şekilde çalışıyor.Teşekkürler :bravo:
Yukarıda benim hatalı yaptığım ne var acaba. Hatamıda öğreneyim bari..


Hem Haluk Beye hemde Mahmut Beye teşekkür ediyorum yardımları için..
 

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
Rica ederim.

Hatalı kısımları şöyle açıklamaya çalışayım. (Böyle anlatma işlerinde biraz beceriksizimdir .... :mrgreen:)

1) Excel' de olmasına rağmen VBA' nin kendi içinde olmayan fonksiyonları kullanmaya çalışıyorsunuz. Bu nedenle, WorksheetFunction yardımı ile istenilen XL fonksiyonları kullanarak sorunu gideriyoruz.

2) Sözkonusu fonksiyonlar Excel sayfalarında bir aralık üzerinde kullanılabiliyor (A1:A10) gibi. Ama VBA' deki TextBox' lar zaten adı da üzerinde, sadece birer metin kutuları. Bunların Excel Range sınıfı ile ilgili bir özellikleri olmadığı için TextBox1:TextBox4 gibi bir aralık veya alan tanımlamamız mümkün değil. Onun yerine bizim yaptığımız olay; metin kutularının içindeki değerleri "Double" olarak dizilere aktarıp, daha sonra da WorksheetFunction yardımıyla ilgili XL fonksiyonlarını kullanmak.
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,897
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
Gayet güzel anlatmışsınız ne demek istediğinizi anladım. Çok teşekkürler :mutlu:
 
Üst