Excel VBA üzerinde matrisi köşegeninden kopyalama

Katılım
12 Eylül 2020
Mesajlar
174
Excel Vers. ve Dili
365 ev
İyi günler arkadaşlar sheet 1 üzerinde verilen matrisimi sheet2 ye köşegenin altını boş bırakıp kopyalamak istiyorum yani köşegenden simetrisi olmayacak şekilde tek taraflı gözükecek şekilde kopyalamak istiyorum
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,784
Excel Vers. ve Dili
Microsoft 365 Tr-64
Yanlış bilmiyorsam;
Matris köşegeni 1.satır 1. sütundan başlayıp, n.satır n.sütuna doğru yani sol üst köşeden sağ alt köşeye doğru giden ve sadece kare matrislere özgü bir kavramdır.
Köşegenin altından kasıt köşegenin geçtiği elemanlar mıdır?
Yoksa neresidir?
Ya da örnek bir dosya yükleyiniz.
 
Katılım
12 Eylül 2020
Mesajlar
174
Excel Vers. ve Dili
365 ev
Yanlış bilmiyorsam;
Matris köşegeni 1.satır 1. sütundan başlayıp, n.satır n.sütuna doğru yani sol üst köşeden sağ alt köşeye doğru giden ve sadece kare matrislere özgü bir kavramdır.
Köşegenin altından kasıt köşegenin geçtiği elemanlar mıdır?
Yoksa neresidir?
Ya da örnek bir dosya yükleyiniz.
matrisim kare matris ilk sayfada matrisimde köşegenin altıda dolu , ama 2. sayfada bu köşegenin altındaki verileri istemiyorum fakat matrisimin büyüklüğü değişebileceği için belli bir alanı seçip kopyalama ya da silme yapamıyorum
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,784
Excel Vers. ve Dili
Microsoft 365 Tr-64
Sheet1 deki var olan halini ve Sheet2 de olması gereken halini içerecek bir örnek dosya atarmısın?
Neye göre hangi formata göre hangi zamanda ne yapılacğını anlamamız lazım
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,784
Excel Vers. ve Dili
Microsoft 365 Tr-64
Format hep bu şekilde midir?
Sayfa1 A1 hücresinden başlayan bir kare matris midir?
Kare matrisin dışındaki alanlarda dolu hücre var mıdır?
Sayfa 1 sadece kare matristen mi oluşmaktadır?
Sayfa 2 de sadece kare matris mi olacaktır?
Matris 200x200 gibi bir alana sahip olabilecek mi?
Limit bir değer varmıdır matris boyutu hakkında?
 
Katılım
12 Eylül 2020
Mesajlar
174
Excel Vers. ve Dili
365 ev
matris boyutu hakkında limit değer yok yani şu şekilde problemin boyutları değişebilir ama 40x40 veya 50x50 den fazla olabileceğini düşünmüyorum , matrisin 1. satır ve A. sütunu başka noktaların isimleriyle dolu olacak aslında o yüzden ilk satır ve sütun alınmaması gerek , matrisin dışında başka bir hücrede veri olmayacak kopyalanırken ve sayfa 2 kare matris boyutunda olacak evet her hücredeki değerleri atanmamış olsa da boyutu diğer matrisin boyutuna denk olacak
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,784
Excel Vers. ve Dili
Microsoft 365 Tr-64
=EĞER(SATIR()+SÜTUN()>2*SATIR();Sayfa1!A1;"")
Şu formül işinizi görüyor olmalı.
Matrisinizin sayfa1 de A1 den başladığını kabul ettim.
Sayfa2 de A1 hücresine yapıştırın.
Sayfa2 de istediğiniz boyuta kadar sağa ve aşağıya doğru çoğaltabilirsiniz.

Eğer Sayfa1 de matris A1 de değilde başka yerde başlıyorsa A1 yazan kısmı değiştirin.
 
Katılım
12 Eylül 2020
Mesajlar
174
Excel Vers. ve Dili
365 ev
=EĞER(SATIR()+SÜTUN()>2*SATIR();Sayfa1!A1;"")
Şu formül işinizi görüyor olmalı.
Matrisinizin sayfa1 de A1 den başladığını kabul ettim.
Sayfa2 de A1 hücresine ya da isteidğiniz başlangıç hücresine yapıştırın.
Sayfa2 de istediğiniz boyuta kadar sağa ve aşağıya doğru çoğaltabilirsiniz.
VBA üzerinde çalışıyordum mümkünse VBA kodunu yazar mısınız
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,784
Excel Vers. ve Dili
Microsoft 365 Tr-64
matrisin 1. satır ve A. sütunu başka noktaların isimleriyle dolu olacak aslında o yüzden ilk satır ve sütun alınmaması gerek
Bunun anlamı matris B2 den mi başlıyor sürekli ?
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,784
Excel Vers. ve Dili
Microsoft 365 Tr-64
Bu kodu istediğiniz şekilde düzenleyip çalıştabilirisiniz.
C++:
Sub MatrisKopyala()
Dim Sh1 As Worksheet
Dim Sh2 As Worksheet
Dim i As Integer, k As Integer, Boyut As Integer

    Set Sh1 = Sheets("Sayfa1") ' Kopyalanacak matrisin olduğu sayfa
    Set Sh2 = Sheets("Sayfa2") ' Kopyalanacağı sayfa...kendinize göre düzeltebilirisiniz.
    Boyut = WorksheetFunction.CountA(Sh1.Rows("2")) + 1
    For i = 1 To Boyut
        For k = 1 To Boyut
            If i + k > 2 * i Then
                Sh2.Cells(i, k) = Sh1.Cells(i + 1, k + 1)
            Else
                Sh2.Cells(i, k) = ""
            End If
        Next k
    Next i
End Sub
 
Üst