Değişken boyutlu matrislerin çarpımı

Katılım
4 Şubat 2010
Mesajlar
40
Excel Vers. ve Dili
excell 2010 türkçe
Merhaba,

Değişken boyutlu nxn boyutlu bir matrisin nx1 boyutlu bir matris ile çarpmaya çalışıyorum.

Alttaki resimde görünen iki matrisin çarpımı için resmin altındaki kodu yazdım.
https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-ash3/t1/1625642_10152023062284633_960830403_n.jpg

Range("i1:i5") = WorksheetFunction.MMult(Range("a1:e5"), Range("h1:h5"))

yalnız burada şöyle bir durum var. Bu matrisin boyutu her zaman 5x5 olmayabilir. 6x6 bir matrisi 6x1'lik veya 7x7 bir matrisi de 7x1lik bir matrisle de çarpmak isteyebilirim. Dolayısı ile vermiş olduğum kodu matrisin boyutuna göre daha esnek hale nasıl getirebilirim?

Bilginizi rica ederim.

Selamlar.
 

systran

Destek Ekibi
Destek Ekibi
Katılım
15 Aralık 2007
Mesajlar
1,669
Excel Vers. ve Dili
2021 PRO [TR]
şu şekilde olur mu?
Kod:
[B]uzunluk[/B]=7
Range("i1:i" & [B]uzunluk[/B]) = WorksheetFunction.MMult(Range("a1:" & [B]chr(uzunluk) & uzunluk[/B]), Range("h1:h" & [B]uzunluk[/B]))
NOT: kullandığın formül H sütununu kullandığı için maksimum boyut 7 girilebilir çünkü 8 olunca matris H sütuna taşar. eğer bu sorunu düzeltirsen istediğin esnekliği sağlar.
 
Son düzenleme:
Katılım
4 Şubat 2010
Mesajlar
40
Excel Vers. ve Dili
excell 2010 türkçe
şöyle izah edeyim,

tek bir matrisin çarpımı için

Range("i1:i5") = WorksheetFunction.MMult(Range("a1:e5"), Range("h1:h5"))

kodu yeterli evet,

Fakat alt alta bu şekilde 3000 adet matris olduğunu düşünelim


Ne yapmam gerekiyor?
 

systran

Destek Ekibi
Destek Ekibi
Katılım
15 Aralık 2007
Mesajlar
1,669
Excel Vers. ve Dili
2021 PRO [TR]
ensek yapıda derken, 5x5, 6x6, 7x7 .... şeklinde değişen 1 tane matris çarpımını kastettiğini sanmıştım.
alt alta 3000 tane aynı boyutta(!!!) ise matrisler döngü kurman gerek. döngü ile sorun çözülür.
 
Katılım
4 Şubat 2010
Mesajlar
40
Excel Vers. ve Dili
excell 2010 türkçe
Sayın systran,

Haklısınız sorunun şeklini değiştirdim.

Aslında benim istediğim değişken boyutlu ve çok sayıda bu matris çarpımlarından oluşturmaktı.

Fakat bu şekli epey karmaşık olacağından dolayı boyutlarının sabit kalmasını tercih ettim.

Döngüye sokmalıyım haklısınız ama For kullanamadım burada.

Yardımınızı rica ederim.
 

systran

Destek Ekibi
Destek Ekibi
Katılım
15 Aralık 2007
Mesajlar
1,669
Excel Vers. ve Dili
2021 PRO [TR]
şu şekilde dener misin? bende hata verdi ama sebebini anlamadım :(
Kod:
kactane = 3
matrisboyu = 5
'matris boyutu 5 ve matrislerin arasında 1 satır boşluk olmalı.

For i = 1 To kactane
baslangic = (i - 1) * matrisboyu + i
bitis = ((i - 1) * matrisboyu + i) + matrisboyu - 1
STR1 = "I" & baslangic & ":I" & bitis
STR2 = "A" & baslangic & ":" & Chr(64 + matrisboyu) & bitis
STR3 = "H" & baslangic & ":H" & bitis
'MsgBox Str1 & vbTab & str2 & vbTab & str3
Sayfa1.Range(STR1).Value = WorksheetFunction.MMult(Range(STR2), Range(STR3))
Next i
İLAVE: "Using Mmult in VBA returns the error #1004 if any of the values are text or blank. I suggest that you ensure that you have no blanks or text in the range." uyarıya bakılırsa, ben boş hücrelerde denediğim için hata vermiş olabilir.
 
Son düzenleme:
Katılım
4 Şubat 2010
Mesajlar
40
Excel Vers. ve Dili
excell 2010 türkçe
Ellerinize sağlık :)
 
Üst