• DİKKAT

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

Excel VBA sütun içi arama yapmak

Katılım
12 Eylül 2020
Mesajlar
176
Excel Vers. ve Dili
365 ev
Kod:
Dim listesutun()
    ReDim listesutun(sutun * sutun)
    Dim b As Integer
    b = Sheets("sayfa1").Cells(satir, sutun - 1)
    For i = 1 To Sheets("sayfa3").UsedRange.Rows.Count
         listesatir(i) = Sheets("sayfa3").Cells(i, 1)
         listesutun(i) = Sheets("sayfa3").Cells(i, 2)
    Next i
While b > 0

            For j = 1 To (satir - 1)
             i = Sheets("sayfa3").Cells(1, 3)
              Set xrange2 = Sheets("sayfa4").Rows(i)
     
                If Sheets("sayfa4").Cells(i, j) > 0 And Sheets("sayfa4").Cells(i, j) = Application.WorksheetFunction.Min(xrange2) Then
                    If (i = listesatir(i) And j = listesutun(i)) Or (i = listesutun(i) And j = listesatir(i)) Then
                        a = a + 1
                        Sheets("sayfa5").Cells(a, 1) = i
                        Sheets("sayfa5").Cells(a, 2) = j
                        tpu = tpu + Sheets("sayfa4").Cells(i, j)
                        Sheets("sayfa4").Cells(i, j).ClearContents
                     
                        b = b - 1
                       
                   
                    Else
                       
                        a = a + 1
                        Sheets("sayfa5").Cells(a, 1) = i
                        Sheets("sayfa5").Cells(a, 2) = j
                        tpu = tpu + Sheets("sayfa4").Cells(i, j)
                        Sheets("sayfa4").Cells(i, j).ClearContents
                        Sheets("sayfa4").Cells(j, i).ClearContents
                        b = b - 2
                       
                   
                    End If
               
                      Sheets("sayfa3").Cells(1, 3) = j
                End If
               
               
               
            Next j
       Wend

Arkadaşlar kolay gelsin yukarda görünen kod , bir arama algoritması , en kısa yol problemlerini bulmak için kullanılan çinli postası probleminin uyarlanmış bir versiyonudur kodumda bir hata yok fakat takıldığım bir yer var , çpp de eşleştirme yaparken eşleştirilen hücreyi ve onun simetriğini siliyorum ki tekrardan probleme dahil olmasın ama bazı hücrelerin 2 şer kez çözümün içinde yer alması gerekiyor onları daha öncesinde belirleyip bir sayfaya yazdırıyorum daha sonrasında da bunu bir listeye atıyorum
şimdi burdaki temel sorun şu listeye atarken i ve j listesi şeklinde oluşturuyorum dikkat ederseniz yani satır ve sütun olarak 2 ayrı liste var
bu listeyi arama algoritmasında ayrı bi değişkenle aramıyorum sadece yine i ile arıyorum 2 sinde de i ile aramamın sebebi 2 listenin de i. elemanları bir eşleşmeyi temsil ediyor ve bu eşleşme denk geldiğinde çalışsın istiyorum ama gel gelelim benim listem bazı durumlarda i den kısa oluyor ve bu durumda if şartları false olarak gösteriyor ve yanlış çalışıyor
benim bu durumdan kurtulmam için ne yapmam lazım nasıl bir liste tutabilirim
yine benzer bir liste tutup listesatir ve listesutun un elamanlarını denk getirmem mümkün mü
eğer içinde var mı diye bakarsam doğru olmaz çünkü özel durum söz konusu x,y denk geldiğinde ya da y,x denk geldiğinde çalışmalı
istediğim
 
Merhaba,

Bahsettiniz verileri "Scripting.Dictionary" ile bir diziye yükleyebilirsiniz. Sonra bu diziden varlığını sorgulayabilirsiniz. Gerekirse listeden "Remove" edebilirsiniz.

Forumda bahsettiğim nesne ile ilgili bolca örnek var. Arama yaparsanız ulaşabilirsiniz.

Kolay gelsin..
 
Geri
Üst