Üstadım Allah emeklerinizi zayi etmesin. Büyük emek var bu işte. Birlestir2DArray da yaptığınız düzeltmeyi bir üst satırda düzeltmek gerekiyor, yoksa sadece ilk sütunu arraya yüklüyor. For i = LBound(IlkArray, 1) To UBound(IlkArray, 1) For j = LBound(IlkArray, 2) To UBound(IlkArray, 2) arrBirlestir(i, j) = IlkArray(i, j) Next j Next i Çok teşekkür ederim. Kolay gelsin.
Üstadım Merhaba. öncelikle çalışmalarınız için sizi kutlarım. Verileri alandan yükle gibi sql veri tabanından direk nasıl yükleriz. Böyle bir özellik yok sanırım. Yaptığım denemelerde başaramadım.
Hocam emeğinize sağlık aslında sana micro softun bile maaş bağlaması lazım .... hocam bu " Alandan al " ile verileri alabiliyoruz fakat mesala listview deki cok satır ve sütunlu verileri nasıl array'a yükleyip sayfaya aktarabiliriz
Çok teşekkür ederim Mustafa Bey. Aslında form verileri ile çalışan özellikler ekledim fakat maalesef Excel açıldığında bu elemanlara en az bir form eklenmeden aktif olmuyor form kütüphanesi. Ondan dolayı derlerken sıkıntı çıkarıyor. Bende ondan dolayı kaldırdım form elemanı özelliklerini
Hocam class inizin kullanım detayları ile ilgili videolar çok faydalı oldu. Emeğiniz için teşekkürler. Birleştirme özelliği ile ilgili bir sorum olacak, birleştirilecek array lerin sayısının her defasında değiştiği durumlarda nasıl hareket edebiliriz? Her işlemde kodu revize etmeden, mesela birleştirilmek istenen arrayler tanımlanırken kullanıcı birleştirmek istediği arrayleri seçebilir mi yada döngüsel bir işleyişle kod otomatik olarak ilgili sayfa yada sayfalardaki tüm veriyi arrayleri atayıp yine bir döngü ile tek tek birleştirme yapabilir mi?
@@UzmanExcel demek istediğim yine vba ile aslında, şöyle 55bin satırlık veriyi çoketopla yaptığımda 8 dakika falan sürüyor döngüden dolayı acaba sizin advanced array ile yapabilir miyim diye düşündüm
Hocam iki array birleştirme özelliğini denerken şöyle bir hata aldım; anladığım kadarıyla ilk array'in satır sayısı daha az ise run-time error '9' veriyor. Siz böyle bir hata aldınız mı?
Hocam merhaba , Bu class geliştirme olayını biraz gevşettiniz galiba... Hocam bu arr.çokefiltrele olayında ölçüt aralığında sağdan yada soldan belli bir aralığı ölçüt olarak arattırabiliyormuyuz...sanki class ın içinde left ve right olayları var gibi
Merhabalar Mustafa Bey Class benim için sonlandı. İşimi görüyo su an benim. Dediğiniz gibi arama var. Wildcard kullanarak arama yapabilirsiniz. Ekstra özellik isterseniz onlari da sizden bekliyorum
@@UzmanExcel hocam ben kendimce amatör bile değilim....dediğiniz çok şeyi bilmem mesela wildcard nedir...?? ama siz şuraya bir satır yazıp örnek verirseniz ... mesela " arr.cokefilrele(false,vbTextConpare,right ( 2,7) ,xxx) gibi...bu rigt nasıl yapıcaz hocam
Estağfurullah. Arayacağıniz kelimenin sağına * isareti koyarsaniz left gibi çalışır, soluna koyarsaniz right gibi çalışır, iki tarafina da koyarsaniz kelimeyi içinde arayarak çalışır
@@UzmanExcel hocam ya kusura bakmayın ama beceremedim bana şölle izah edebilirmisiniz ?... mesela arr nin 2.sütununda normal tarihlerim var ölçüt aralığım orası , ölçütüm ise sayfada " 01.2022" yani ay ve yıl olarak ...örnek arr.çokefiltrele(false,vbTextConpare,2,sayfa1.cells(4,2)) işte hocam bana bu örneği doldururmusunuz rica etsem
Mehmet Bey clsArray2D paylaşımınız için teşekkür ederim. Matris tablo çözümü için küçük bir kod yazdım, çorbada benimde tuzum olsun. Public Sub Matris() Dim arr As New clsArray2D Dim solvedmatris As New clsArray2D Dim arrmtrs As Variant Dim rng As Range Dim x, y, i, j, q As Integer Set rng = ThisWorkbook.Worksheets("Sayfa1").Range("A1").CurrentRegion arr.AlandanYukle rng, False ReDim arrmtrs(1 To (arr.SatirBitis - 1) * (arr.SutunBitis - 1), 1 To 3) For x = 2 To arr.SatirBitis For y = ((arr.SutunBitis - 1) * (x - 2)) + 1 To (arr.SutunBitis - 1) * (x - 1) arrmtrs(y, 1) = arr.Value(x, 1) Next y Next x j = 1 For q = 2 To arr.SatirBitis For i = 2 To arr.SutunBitis arrmtrs(j, 2) = arr.Value(1, i) arrmtrs(j, 3) = arr.Value(q, i) j = j + 1 Next i Next q solvedmatris.ArraydenYukle arrmtrs Worksheets.Add solvedmatris.VeriyiAlanaYazdir ActiveSheet.Range("A1") End Sub
Ali İhsan Bey merhaba Katkılarıniz için çok teşekkür ederim. Aciklamadaki linkten kodu text editor ile güncelleyebilirsiniz. Kodu da en kısa zamanda test edeceğim. Ne yaptığını da yazabilirseniz sevinirim
@@UzmanExcel Merhaba Mehmet Bey Üç kez denedim ama kaydedemedim text editore, kod Power BI' Daki sütun çözme aracı gibi, yada pivot tablo terse döndürmek gibi. Kusura bakmayın sizden rica edeceğim Class modüle aşağıdaki prosedürü ekleyebilirmisiniz; Public Sub MatrisSolve(ByVal rng As Range) Dim arr As New clsArray2D Dim solvedmatris As New clsArray2D Dim arrmtrs As Variant Dim x, y, i, j, q As Integer arr.AlandanYukle rng, False ReDim arrmtrs(1 To (arr.SatirBitis - 1) * (arr.SutunBitis - 1), 1 To 3) For x = 2 To arr.SatirBitis For y = ((arr.SutunBitis - 1) * (x - 2)) + 1 To (arr.SutunBitis - 1) * (x - 1) arrmtrs(y, 1) = arr.Value(x, 1) Next y Next x j = 1 For q = 2 To arr.SatirBitis For i = 2 To arr.SutunBitis arrmtrs(j, 2) = arr.Value(1, i) arrmtrs(j, 3) = arr.Value(q, i) j = j + 1 Next i Next q solvedmatris.ArraydenYukle arrmtrs Worksheets.Add solvedmatris.VeriyiAlanaYazdir ActiveSheet.Range("A1") End Sub kullanım için modülde aşağıdaki iki satırı kullanabilirsiniz; Dim sonuc As New clsArray2D sonuc.MatrisSolve ThisWorkbook.Worksheets("Sayfa1").Range("A1").CurrentRegion Örnek ilk array (matris tablo); DURUM 1 DURUM 2 DURUM 3 ÖZELLİK - A 59 20 1 ÖZELLİK - B 15 47 56 Sonuç arrayi; ÖZELLİK - A DURUM 1 59 ÖZELLİK - A DURUM 2 20 ÖZELLİK - A DURUM 3 1 ÖZELLİK - B DURUM 1 15 ÖZELLİK - B DURUM 2 47 ÖZELLİK - B DURUM 3 56
@@UzmanExcel Mehmet Bey koda soldan sabit tutulacak sütun opsiyonu güncelledim. Class için; Public Sub MatrisSolve(ByVal rng As Range, sbtstnsys As Integer) Dim arr As New clsArray2D Dim solvedmatris As New clsArray2D Dim arrmtrs As Variant Dim x, y, i, j, q, z As Integer arr.AlandanYukle rng, False ReDim arrmtrs(1 To (arr.SatirBitis - 1) * (arr.SutunBitis - sbtstnsys), 1 To sbtstnsys + 2) For z = 1 To sbtstnsys For x = 2 To arr.SatirBitis For y = ((arr.SutunBitis - sbtstnsys) * (x - 2)) + 1 To (arr.SutunBitis - sbtstnsys) * (x - 1) arrmtrs(y, z) = arr.Value(x, z) Next y Next x Next z j = 1 For q = 2 To arr.SatirBitis For i = sbtstnsys + 1 To arr.SutunBitis arrmtrs(j, sbtstnsys + 1) = arr.Value(1, i) arrmtrs(j, sbtstnsys + 2) = arr.Value(q, i) j = j + 1 Next i Next q solvedmatris.ArraydenYukle arrmtrs Worksheets.Add solvedmatris.VeriyiAlanaYazdir ActiveSheet.Range("A1") End Sub Kullanırken; Public Sub Matris() Dim sonuc As New clsArray2D sonuc.MatrisSolve ThisWorkbook.Worksheets("Sayfa1").Range("A1").CurrentRegion, 2 End Sub
Üstadım Allah emeklerinizi zayi etmesin. Büyük emek var bu işte.
Birlestir2DArray da
yaptığınız düzeltmeyi bir üst satırda düzeltmek gerekiyor, yoksa sadece ilk sütunu arraya yüklüyor.
For i = LBound(IlkArray, 1) To UBound(IlkArray, 1)
For j = LBound(IlkArray, 2) To UBound(IlkArray, 2)
arrBirlestir(i, j) = IlkArray(i, j)
Next j
Next i
Çok teşekkür ederim. Kolay gelsin.
Çok teşekkür ederim Sedat Bey. Çok naziksiniz. Bakacağım dediğiniz koda
tesekkürler hocam, sizlerin sayenizde class larin dünyasina kesfediyoruz.
Çok teşekkür ederim Adnan Bey. Elimden geldiğince güzel içerikler üretmeye çalışıyorum
Emeğinize sağlık hocam.👏🏻👏🏻👏🏻
Videoyu izlemeden yazmıştım. Hocam mükemmel olmuş. Çok teşekkürler. Var mı daha kontrol etmedim ama Replace de olsa çok yakışır bu classa hocam.
Çok teşekkür ederim Emrah Bey. Sizden bekliyorum o zaman Replace özelliğini
@@UzmanExcel inşallah hocam. Zaman bulabilirsem ilgileneceğim.
Mehmet Hocam mükemmel eğitim olmuş Elinize Emeğinize sağlık çok sağolun. Allah kat kat razı olsun. İnşallah
Çok teşekkür ederim Muharrem Bey. Çok naziksiniz
Üstadım Merhaba. öncelikle çalışmalarınız için sizi kutlarım. Verileri alandan yükle gibi sql veri tabanından direk nasıl yükleriz. Böyle bir özellik yok sanırım. Yaptığım denemelerde başaramadım.
Recordset alinip yapilabilir diye düşünüyorum
İki boyutlu özel array normal array nasıl çevirebiliriz hocam bir de hocam
İcinde vardi galiba oyle bir özellik
Hocam emeğinize sağlık aslında sana micro softun bile maaş bağlaması lazım ....
hocam bu " Alandan al " ile verileri alabiliyoruz fakat mesala listview deki cok satır ve sütunlu verileri nasıl array'a yükleyip sayfaya aktarabiliriz
Çok teşekkür ederim Mustafa Bey. Aslında form verileri ile çalışan özellikler ekledim fakat maalesef Excel açıldığında bu elemanlara en az bir form eklenmeden aktif olmuyor form kütüphanesi. Ondan dolayı derlerken sıkıntı çıkarıyor. Bende ondan dolayı kaldırdım form elemanı özelliklerini
@@UzmanExcel peki hocam vba in aray ine çekip sonra bizim arr ye aktarma şansımız yokmu
@@mustafakozbey3150 ua-cam.com/video/iqbKaSmZ8Oo/v-deo.htmlsi=x3LXvYSN1lwGUSIi&t=971
Hocam class inizin kullanım detayları ile ilgili videolar çok faydalı oldu. Emeğiniz için teşekkürler. Birleştirme özelliği ile ilgili bir sorum olacak, birleştirilecek array lerin sayısının her defasında değiştiği durumlarda nasıl hareket edebiliriz? Her işlemde kodu revize etmeden, mesela birleştirilmek istenen arrayler tanımlanırken kullanıcı birleştirmek istediği arrayleri seçebilir mi yada döngüsel bir işleyişle kod otomatik olarak ilgili sayfa yada sayfalardaki tüm veriyi arrayleri atayıp yine bir döngü ile tek tek birleştirme yapabilir mi?
Her seferinde bir dinamik range içerisinden arraylere aktarabilir ve bu arrayleri class in içerisinde döngü ile birleştirebilirsiniz
ClsArray2d MaxMin fonksiyonunda string değerler için max fonksiyonunu çalıştıramadım. desteğinizi rica ederim.
Proje artik public oldugu icin gelistirmesini sizlere biraktim bende
çok teşekkürler, hayırlı ramazanlar@@UzmanExcel
Hocam selamlar, çoketoplayı dinamik yapmak istersek yani kriter kısmına "mehmet" yerine ikinci bir array koymak gibi bir ihtimalimiz var mıdır?
Formullerden pek anlamam ama array formülü ile yapılabilir sanki. En kötü udf ile yapılabilir
@@UzmanExcel demek istediğim yine vba ile aslında, şöyle 55bin satırlık veriyi çoketopla yaptığımda 8 dakika falan sürüyor döngüden dolayı acaba sizin advanced array ile yapabilir miyim diye düşündüm
Tabiki yapabilirsiniz
Hocam iki array birleştirme özelliğini denerken şöyle bir hata aldım; anladığım kadarıyla ilk array'in satır sayısı daha az ise run-time error '9' veriyor. Siz böyle bir hata aldınız mı?
Yok Emrullah Bey. Ben hata almadım daha önce
Hocam merhaba , Bu class geliştirme olayını biraz gevşettiniz galiba... Hocam bu arr.çokefiltrele olayında ölçüt aralığında sağdan yada soldan belli bir aralığı ölçüt olarak arattırabiliyormuyuz...sanki class ın içinde left ve right olayları var gibi
Merhabalar Mustafa Bey
Class benim için sonlandı. İşimi görüyo su an benim. Dediğiniz gibi arama var. Wildcard kullanarak arama yapabilirsiniz. Ekstra özellik isterseniz onlari da sizden bekliyorum
@@UzmanExcel hocam ben kendimce amatör bile değilim....dediğiniz çok şeyi bilmem mesela wildcard nedir...??
ama siz şuraya bir satır yazıp örnek verirseniz ... mesela " arr.cokefilrele(false,vbTextConpare,right ( 2,7) ,xxx) gibi...bu rigt nasıl yapıcaz hocam
Estağfurullah. Arayacağıniz kelimenin sağına * isareti koyarsaniz left gibi çalışır, soluna koyarsaniz right gibi çalışır, iki tarafina da koyarsaniz kelimeyi içinde arayarak çalışır
@@UzmanExcel hocam ya kusura bakmayın ama beceremedim bana şölle izah edebilirmisiniz ?...
mesela arr nin 2.sütununda normal tarihlerim var ölçüt aralığım orası , ölçütüm ise sayfada " 01.2022" yani ay ve yıl olarak ...örnek
arr.çokefiltrele(false,vbTextConpare,2,sayfa1.cells(4,2))
işte hocam bana bu örneği doldururmusunuz rica etsem
Bilgisayar başına geçince doldurayım inşallah. Bir de cokefiltrele guncellendi. En güncel halini indirebilirsiniz en stabil hali için
Mehmet Bey
clsArray2D paylaşımınız için teşekkür ederim. Matris tablo çözümü için küçük bir kod yazdım, çorbada benimde tuzum olsun.
Public Sub Matris()
Dim arr As New clsArray2D
Dim solvedmatris As New clsArray2D
Dim arrmtrs As Variant
Dim rng As Range
Dim x, y, i, j, q As Integer
Set rng = ThisWorkbook.Worksheets("Sayfa1").Range("A1").CurrentRegion
arr.AlandanYukle rng, False
ReDim arrmtrs(1 To (arr.SatirBitis - 1) * (arr.SutunBitis - 1), 1 To 3)
For x = 2 To arr.SatirBitis
For y = ((arr.SutunBitis - 1) * (x - 2)) + 1 To (arr.SutunBitis - 1) * (x - 1)
arrmtrs(y, 1) = arr.Value(x, 1)
Next y
Next x
j = 1
For q = 2 To arr.SatirBitis
For i = 2 To arr.SutunBitis
arrmtrs(j, 2) = arr.Value(1, i)
arrmtrs(j, 3) = arr.Value(q, i)
j = j + 1
Next i
Next q
solvedmatris.ArraydenYukle arrmtrs
Worksheets.Add
solvedmatris.VeriyiAlanaYazdir ActiveSheet.Range("A1")
End Sub
Ali İhsan Bey merhaba
Katkılarıniz için çok teşekkür ederim. Aciklamadaki linkten kodu text editor ile güncelleyebilirsiniz. Kodu da en kısa zamanda test edeceğim. Ne yaptığını da yazabilirseniz sevinirim
@@UzmanExcel Merhaba Mehmet Bey
Üç kez denedim ama kaydedemedim text editore, kod Power BI' Daki sütun çözme aracı gibi, yada pivot tablo terse döndürmek gibi.
Kusura bakmayın sizden rica edeceğim Class modüle aşağıdaki prosedürü ekleyebilirmisiniz;
Public Sub MatrisSolve(ByVal rng As Range)
Dim arr As New clsArray2D
Dim solvedmatris As New clsArray2D
Dim arrmtrs As Variant
Dim x, y, i, j, q As Integer
arr.AlandanYukle rng, False
ReDim arrmtrs(1 To (arr.SatirBitis - 1) * (arr.SutunBitis - 1), 1 To 3)
For x = 2 To arr.SatirBitis
For y = ((arr.SutunBitis - 1) * (x - 2)) + 1 To (arr.SutunBitis - 1) * (x - 1)
arrmtrs(y, 1) = arr.Value(x, 1)
Next y
Next x
j = 1
For q = 2 To arr.SatirBitis
For i = 2 To arr.SutunBitis
arrmtrs(j, 2) = arr.Value(1, i)
arrmtrs(j, 3) = arr.Value(q, i)
j = j + 1
Next i
Next q
solvedmatris.ArraydenYukle arrmtrs
Worksheets.Add
solvedmatris.VeriyiAlanaYazdir ActiveSheet.Range("A1")
End Sub
kullanım için modülde aşağıdaki iki satırı kullanabilirsiniz;
Dim sonuc As New clsArray2D
sonuc.MatrisSolve ThisWorkbook.Worksheets("Sayfa1").Range("A1").CurrentRegion
Örnek
ilk array (matris tablo);
DURUM 1 DURUM 2 DURUM 3
ÖZELLİK - A 59 20 1
ÖZELLİK - B 15 47 56
Sonuç arrayi;
ÖZELLİK - A DURUM 1 59
ÖZELLİK - A DURUM 2 20
ÖZELLİK - A DURUM 3 1
ÖZELLİK - B DURUM 1 15
ÖZELLİK - B DURUM 2 47
ÖZELLİK - B DURUM 3 56
Unpivot yapmışsıniz. Elinize sağlık. Guzel olmuş
@@UzmanExcel Mehmet Bey koda soldan sabit tutulacak sütun opsiyonu güncelledim.
Class için;
Public Sub MatrisSolve(ByVal rng As Range, sbtstnsys As Integer)
Dim arr As New clsArray2D
Dim solvedmatris As New clsArray2D
Dim arrmtrs As Variant
Dim x, y, i, j, q, z As Integer
arr.AlandanYukle rng, False
ReDim arrmtrs(1 To (arr.SatirBitis - 1) * (arr.SutunBitis - sbtstnsys), 1 To sbtstnsys + 2)
For z = 1 To sbtstnsys
For x = 2 To arr.SatirBitis
For y = ((arr.SutunBitis - sbtstnsys) * (x - 2)) + 1 To (arr.SutunBitis - sbtstnsys) * (x - 1)
arrmtrs(y, z) = arr.Value(x, z)
Next y
Next x
Next z
j = 1
For q = 2 To arr.SatirBitis
For i = sbtstnsys + 1 To arr.SutunBitis
arrmtrs(j, sbtstnsys + 1) = arr.Value(1, i)
arrmtrs(j, sbtstnsys + 2) = arr.Value(q, i)
j = j + 1
Next i
Next q
solvedmatris.ArraydenYukle arrmtrs
Worksheets.Add
solvedmatris.VeriyiAlanaYazdir ActiveSheet.Range("A1")
End Sub
Kullanırken;
Public Sub Matris()
Dim sonuc As New clsArray2D
sonuc.MatrisSolve ThisWorkbook.Worksheets("Sayfa1").Range("A1").CurrentRegion, 2
End Sub