• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Matrisin İlk Sütunundaki Değerelere göre yeni matris oluşturma

  • Konbuyu başlatan Konbuyu başlatan hopeful
  • Başlangıç tarihi Başlangıç tarihi
Katılım
4 Ağustos 2006
Mesajlar
134
Excel Vers. ve Dili
2017 Eng
Merhaba arkadaşlar

[3,3] matrisi halinde verimiz olduğunu düşünelim. Matrisin 1. sütunundaki değerler baz alınarak yeni bir matris oluşturacağım. Şöyleki ;

Matrisin (1,1) elamanının sağında yer alan değerlere yani (1,2) ve (1,3) değerleri bir yere yazacağım.Eğer bu değer veya değerler matrisin ilk sütununda da yer alıyorsa, yer alan hücreyi bulup yine sağındaki değerlere bakıp az önce yazırdğım değerlerin yanına yazdıracağım..Bu işlemleri matrisin ilk sütunundaki değerler bitinceye kadar yapacağım...

Karmaşık gelebilir. Yazımla anlatımı zor..Çok basit şekilli anlatım ektedir. Yardımlarınıza ihtiyacım var arkadaşlar..
Şimdiden çok teşekkürler
 
Son düzenleme:
Merhaba,

Kod:
Sub matris_coz()
sutun = 5:   satir = 1
For i = 1 To 3
Cells(satir, sutun) = Cells(i, 1)
ysat = i
GoSub yaz
    
    For z = i + 1 To 3
        For j = 6 To Cells(satir, 5).End(xlToRight).Column
            If Cells(z, 1) = Cells(satir, j) Then
                ysat = z
                GoSub yaz
                Exit For
            End If
        Next j
    Next z

satir = satir + 2:   sutun = 5
Next i

Exit Sub
yaz:
For y = 2 To 3
    If Cells(ysat, y) <> "" Then sutun = sutun + 1:  Cells(satir, sutun) = Cells(ysat, y)
Next y
Return

End Sub
 
&#199;ok &#231;ok te&#351;ekk&#252;r ediyorum. Eme&#287;inize ellerinize sa&#287;l&#305;k say&#305;n dost..
Matrisin boyutu de&#287;i&#351;ti&#287;inde ya da yeri de&#287;i&#351;ti&#287;inde kod &#252;zerinde hangi ibareleri de&#287;i&#351;tirmeliyim? Kurcalayarak ve mant&#305;k kullanrak bulmaya &#231;al&#305;&#351;aca&#287;&#305;m ama buna da cevap verebilirseniz &#231;ok sevinirim..tekrardan &#231;ok saolunuz
 
Merhaba
Aynı matriste birinci satır ile ikinci satırın yerini değiştirdim. Aynı sonuç vermesi gerekirken farklı bir sonuç verdi.

Ayrıntılı bir şekilde açıklama ektedir. İnceler misiniz lütfen?
 
1 ve 2.sayfadaki nasıl aynı sonucu verecek anlayamadım. Sizin açıklamalarınıza göre verilen kod doğru çalışıyor.
 
aynı sonucu vermesi gerekir.
2. sayfada durum şöyle;
Birinci sütunda yer alan 2 için sonuç doğru : 2, 3, 5 , 6
Birinci sütunda yer alan 1 için sonuç şöyle olmalı. 1 in sağında 2 var. Şimdi birinci sütundaki 2 değerini arayacak ve bulacak (2 değeri ilk satırda var). Bu 2 değerininin yanındaki sayıları yazacak. 3 ve 5. Şİmdi 3 ve 5 için tekrar birinci sütuna bakacak. birinci sütundaki 3 ün yanında 6 var. O halde sonuç 1, 2, 3, 5, 6 olmalı.

Birinci sayfa ile ikinci sayfada yer alan soru aynı soru. Sadece 1. satır ile 2. satır yer değiştirmiş. Aynı sonucu vermelidir..
 
sayfaya bir &#231;ekbaks :) koyun, kep&#351;&#305;n&#305;n&#305; da "2. il 3. yer de&#287;i&#351;ti yap&#305;n.
&#351;imdi dost beyin verdi&#287;i kodlar&#305; 2 ile 3 &#252;n yer de&#287;i&#351;tirdi&#287;i zaman olmas&#305; gereken halini yaz&#305;n. bir if d&#246;ng&#252;s&#252;yle &#231;ekbaks&#305;n 2 haline ayr&#305; ayr&#305; bu haz&#305;rlad&#305;&#287;&#305;n&#305;z 2 ayr&#305; &#231;al&#305;&#351;may&#305; (dost beyin haz&#305;rlad&#305;&#287;&#305; ve sizin de&#287;i&#351;tirdi&#287;iniz) y&#246;nledirin.
2 ile 3 &#252; yerde&#287;i&#351;tirip &#231;ekbaks&#305; i&#351;aretleyin. b&#246;yle yaparsan&#305;z &#231;al&#305;&#351;&#305;r.
ingilizce ile aram pek iyi de&#287;il
ayemsori
 
Merhaba,

İlk sorunuzda bu şekilde anlaşılmıyordu.
İstediğiniz şekilde düzelttim. Ayrıca, matrisin boyu istediğiniz ölçüde olabilir, kodları ona göre düzelttim.

Kod:
Sub matris_coz()
tmpsutun = Range("A1").CurrentRegion.Columns.Count + 2
sutun = tmpsutun
satir = 1
sonsat = Range("A1").End(xlDown).Row
For i = 1 To sonsat
Cells(satir, sutun) = Cells(i, 1)
ysat = i
GoSub yaz
    
    For z = 1 To sonsat
        If z <> i Then
            For j = tmpsutun + 1 To Cells(satir, tmpsutun).End(xlToRight).Column
                If Cells(z, 1) = Cells(satir, j) Then
                    ysat = z
                    GoSub yaz
                    Exit For
                End If
            Next j
        End If
    Next z

satir = satir + 2:   sutun = tmpsutun
Next i

Exit Sub
yaz:
For y = 2 To (tmpsutun - 2)
    If Cells(ysat, y) <> "" Then sutun = sutun + 1:  Cells(satir, sutun) = Cells(ysat, y)
Next y
Return

End Sub
 
Say&#305;n dost say&#305;n moderat&#246;r arkada&#351;lar &#246;ncelikle te&#351;ekk&#252;r ederim
bu sorunu form&#252;llerle yapabilirmiyiz
 
Sayın dost harikasınız. Çok teşekkür ederim..
Son bişey daha rica edebilir miyim affınıza sığınarak.. Sonuçlar doğru. Ancak şöyle bi şeyi yaptırabilir miyiz? tüm cevap alanı için, aynı satırda aynı değerden yalnızca bir tane olsun.. Şöyle bir sonuç çıktı mesela 1 değeri için ;

1 , 2 , 3 , 5 , 4 , 8 , 6 , 7 , 8 , 9 , 9 , 10

8 ve 9 değerlerinden birden fazla var.

o halde çözüm şu şekilde olsun : 1, 2 , 3 , 5, 4, 8 , 6 , 7 , 9 , 10

Nasıl teşekkür edeceğimi bilemiyorum arkadaşlar. Allah razı olsun. Ellerinize emeklerinize sağlık..
 
Son düzenleme:
Geri
Üst