VBA Matrix - Oluşturma ve Daha Fazlası

Bu eğitim size VBA'da bir Dizi kullanarak bir matrisin nasıl oluşturulacağını gösterecektir.

Matris, aynı sayıda Satır ve Sütun içeren dikdörtgen bir sayı dizisidir. Dizi değişkenlerini doldurarak ve VBA Döngülerini kullanarak VBA'da bir matris oluşturabilirsiniz.

VBA'da Matris Oluşturma

123456789101112131415 Alt CreateSimpleMatrix()Dim matrix() Tamsayı olarakDim x, i, j, k Tamsayı Olarak'dizinin boyutunu yeniden karartReDim matrix(1'den 3'e, 1'den 3) Tamsayı Olarakx = 1i = 1 ila 3 içinj = 1 ila 3 içinmatris(i, j) = xx = (x + 1)sonraki jsonraki ben' sonucu tek seferde sayfaya döndürAralık("A1:C3") = matrisAlt Bitiş

Yukarıdaki prosedürü çalıştırmak, çalışma sayfanıza Range(“A1:C3”) için basit bir matris döndürür.

Tek Satır Vektörünü Matrise Dönüştür

Aşağıdaki sayı sütununu düşünün. Bir aşamada bir sayı sütununu bir matrise dönüştürmek isteyebilirsiniz.

Aşağıdaki fonksiyonu kullanarak sayı listesinden bir matris oluşturabiliriz.

123456789101112131415161718192021 Varyant Olarak Create_Matrix(Vector_Range As Range, No_Of_Cols_in_output As Integer, No_of_Rows_in_output As Integer) Function Create_MatrixReDim Temp_Array(1'den No_Of_Cols_in_output'a, 1'den No_of_Rows_in_output'a)Tamsayı Olarak No_Of_Elements_In_Vector DimCol_Count Tamsayı olarak Dim, Row_Count Tamsayı olarakNo_Of_Elements_In_Vector = Vector_Range.Rows.Count'BOŞ Koşulları Ortadan KaldırınVector_Range Hiçbir Şey Değilse İşlevden ÇıkNo_Of_Cols_in_output = 0 ise Fonksiyondan ÇıkNo_of_Rows_in_output = 0 ise İşlevden ÇıkNo_Of_Elements_In_Vector = 0 ise İşlevden ÇıkCol_Count için = 1 - No_Of_Cols_in_outputRow_Count için = 1 - No_of_Rows_in_outputTemp_Array(Col_Count, Row_Count) = Vector_Range.Cells(((No_of_Rows_in_output) * (Col_Count - 1) + Row_Count), 1)Sonraki Satır_SayısıSonraki Sütun_SayısıCreate_Matrix = Temp_ArrayBitiş İşlevi

Yukarıdaki fonksiyonu çağırarak matrisi Excel sayfamızda oluşturabiliriz.

123 Alt ConvertToMatrix()Aralık("C1:H2") = Create_Matrix(Range("A1:A10"), 2, 6)Alt Bitiş

Bir Matrisi Tek Satırlı Vektöre Dönüştür

Alternatif olarak, bir Matrix'i Tek satıra dönüştürmek isteyebilirsiniz. Aşağıdaki Matrix'i düşünün.

Aşağıdaki fonksiyonu kullanarak bunu tek boyutlu bir diziye dönüştürebiliriz.

12345678910111213141516171819202122 Varyant Olarak Create_Vector(Matrix_Range As Range) İşleviNo_of_Cols Tamsayı Olarak Dim, No_Of_Rows Tamsayı OlarakDim i Tamsayı OlarakDim j Tamsayı Olarak'matristen satırları ve sütunları alNo_of_Cols = Matrix_Range.Columns.CountNo_Of_Rows = Matrix_Range.Rows.CountReDim Temp_Array(No_of_Cols * No_Of_Rows)'BOŞ Koşulları Ortadan KaldırınMatrix_Range Hiçbir Şey Değilse İşlevden ÇıkNo_of_Cols = 0 ise Fonksiyondan ÇıkNo_Of_Rows = 0 ise Fonksiyondan Çık'dizide dolaş - ilk elemanj = 1 için No_Of_Rows'şimdi ikinci elemandan geçi = 0 için No_of_Cols - 1'tek boyutlu bir geçici diziye ataTemp_Array((i * No_Of_Rows) + j) = Matrix_Range.Cells(j, i + 1)sonraki bensonraki jCreate_Vector = Temp_ArrayBitiş İşlevi

Şimdi aşağıdaki prosedürü kullanarak bu fonksiyonu çağırabiliriz.

1234567891011 Alt GenerateVector()Dim Vector() Varyant OlarakDim k Tamsayı OlarakNo_of_Elements sönük'diziyi alVektör = Create_Vector(Sayfalar("Sayfa1").Range("A1:D5"))'dizi boyunca dolaşın ve sayfayı doldurunk = 0 için UBound(Vektör) - 1Sayfalar("Sayfa1").Range("G1").Offset(k, 0).Value = Vector(k + 1)Sonraki kAlt Bitiş

Bu prosedür aşağıdaki sonucu döndürecektir.

Matris Dizisi oluşturmak için WorksheetFunction.MMMULT'u kullanma

Aşağıdaki elektronik tabloyu düşünün.

Faiz oranına ve kişinin borç almak istediği miktara göre yukarıdaki tablo için faiz tutarını aşağıdaki prosedürü kullanarak hesaplayabiliriz.

123456789101112 Alt KullanımMMULT()Aralık Olarak Dim rngIntRateDim rngAmtKredi Olarak AralığıDim Result() Varyant Olarak'aralık nesnelerimizi doldurunrngIntRate = Aralık ("B4:B9") olarak ayarlayınrngAmtLoan = Aralık ("C3:H3") olarak ayarla'sonuç dizisini doldurmak için MMULT formülünü kullanınSonuç = WorksheetFunction.MMult(rngIntRate, rngAmtLoan)'sayfayı doldurAralık("C4:H9") = SonuçAlt Bitiş

Yukarıdaki sayfada, yukarıdaki prosedürün hücreleri formüller yerine değerlerle doldurduğunu fark edeceksiniz - yukarıdaki grafikte C4'e bakın - içinde bir formül değil, 200 değerine sahiptir. Kullanmak Çalışma SayfasıFonksiyonu method her zaman çalışma sayfasına bir formül değil, statik bir değer döndürür. Bu, faiz oranı veya kredi tutarının değişmesi durumunda, doldurulmuş matristeki karşılık gelen değerlerin OLMAYACAK değiştirmek.

kullanmak yerine WorksheetFunction.MMMULTkullanarak bir hücreye MMULT İşlevini uygulamak için VBA'yı kullanabilirsiniz. Formül Dizisi yöntem.

123 Alt EkleMMULT()Range("C4:H9").FormulaArray = "=MMULT(B4:B9;C3:H3)"Alt Bitiş

Artık elektronik tablo doldurulduğunda, hücrelerde bir formül kullanıldığına dikkat edin.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave