• DİKKAT

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

listede indis

yalovam77

Altın Üye
Altın Üye
Katılım
12 Temmuz 2006
Mesajlar
206
Excel Vers. ve Dili
Microsoft 365 / Türkçe
Merhaba üsdatlarım

ekte göndermiş olduğum belgede listeye indisle bilgi almak istiyorum. tek hücre olunca sitede araştırdım cevabını buldum ekteki belgede var benim istediğim vba kodu indis ile listede yapılabilirmi listede dolu olan satırlardaki verilere göre karşılığında değeri getirecek indis kodu lazım sitede indisin listeye uygulanmasını bulamadım.yardımcı olursanız sevinirim. ilginize şimdiden teşekkür ederim.
 

Ekli dosyalar

Merhaba,

İndis, kaçıncı yerine find komutunu ile döngü kullanmanızı tavsiye ederim.

Kod:
Private Sub CommandButton1_Click()
 
    Dim i As Long, c As Range, sat As Long, sut As Integer
 
    Range("D5:D" & Rows.Count).ClearContents
 
    With Sheets("Sayfa2")
        For i = 5 To Cells(Rows.Count, "B").End(xlUp).Row
 
            Set c = .Range("A:A").Find(Cells(i, "B"), , xlValues, xlWhole)
            If Not c Is Nothing Then sat = c.Row
 
            Set c = .Rows(1).Find(Cells(i, "C"), , xlValues, xlWhole)
            If Not c Is Nothing Then sut = c.Column
 
            Cells(i, "D") = .Cells(sat, sut)
 
        Next i
    End With
 
End Sub

.
 
Merhaba Ömer hocam

indis kaçıncı yerine find komutunu döngü ile nasıl kullanacağımı bilmiyorum yardımcı olurmusunuz ve find komutunu kullanmamızın nedeni nedir. yardımlarınız için teşekkür ederim
 
Find komutunun örnek kodunu vermiştim. Bu şekilde kullanabilirsiniz.

Esasında yukarıdaki kod da find komutu kaçıncı gibi satır ve sütun indekslerini buduk sonra kesişimini aldık.

Find komutu çok daha hızlı ve pratik bir komuttur.
 
Merhaba üsdadım

listede süzme varsa etkilermi bu find komutunu birde verdiğiniz komut ekteki belgede çalıştı ama başka belgeye uyarlayamadım. biraz açıklama yapabilirmisiniz. kodu aşağıya kopyaladım " " içindeki harflerin hangi sayfaya ait olduğunu yazabilirmisiniz birde liste sayfa1 de tablo sayfa2 de değilde ikiside aynı sayfada olursa kod nasıl olur ilginize teşekkür ederim.

Private Sub CommandButton1_Click()

Dim i As Long, c As Range, sat As Long, sut As Integer

Range("D5:D" & Rows.Count).ClearContents

With Sheets("Sayfa2")
For i = 5 To Cells(Rows.Count, "B").End(xlUp).Row

Set c = .Range("A:A").Find(Cells(i, "B"), , xlValues, xlWhole)
If Not c Is Nothing Then sat = c.Row

Set c = .Rows(1).Find(Cells(i, "C"), , xlValues, xlWhole)
If Not c Is Nothing Then sut = c.Column

Cells(i, "D") = .Cells(sat, sut)

Next i
End With

End Sub
 
Sayfa üzerinde "ctrl f" ile veri bulmanın vba daki yazılımı olarak düşünün.

Kod sade olduğu için kolaylıla anlayabilirsiniz.

Sayfa isimine gelince:

CommandButton sayfa1 de olduğu için sayfa1 i kodlara tanımlamaya ihtiyaç duymadım.

Sayfa2 yi de Set komutu ile tanımlama yerine, with komutu ile tanımladım. Bu tanımlamayı, yazı yazarken aynı kelimeler alt alta geldiğinde kullanılan denden işareti gibi düşünebilirsiniz. With komutunda tanımlana değeri denden işareti ile değil de nokta işareti ile belirtiriz.

Kod:
    With Sheets("Sayfa2")
        For i = 5 To Cells(Rows.Count, "B").End(xlUp).Row

            Set c =[B][COLOR=red] .[/COLOR][/B]Range("A:A").Find(Cells(i, "B"), , xlValues, xlWhole)
            If Not c Is Nothing Then sat = c.Row

            Set c =[COLOR=red][B] .[/B][/COLOR]Rows(1).Find(Cells(i, "C"), , xlValues, xlWhole)
            If Not c Is Nothing Then sut = c.Column

            Cells(i, "D") = [COLOR=red][B].[/B][/COLOR]Cells(sat, sut)

        Next i
    End With
kodlarda kırmızı işaretlediğim nokta karakterleri yukarıda açıkladığım with tanımlamasından dolayı kullanılmıştır.

.
 
Merhaba hocam


ilginize teşekkür ederim dediklerinizi yaptım ve kod çalıştı. ancak

Cells(i, "D") = .Cells(sat, sut)


belgede süzme işlemi yaptıktan sonra verdiğiniz kodu çalıştırmam gerekiyor ve süzme yapıp çalıştırınca yukarıda yazdığım satırda hata veriyor verdiğiniz kodu sizme yaptığım belgede nasıl uygularım acaba. yardımlarınız için teşekkür ederim.
 
Bahsettiğiniz türden bir örnek eklermisiniz.
 
Merhaba hocam

ekte örnek gönderdim tarih aralığında süzme işlemi yapıldıktan sonra karşılıkları bulunup yazılacak sonra tam liste yaptığımda sadece süzülenlerin karşısındaki değerleri görmem gerekiyor. Yalnız mümkünse sadece sizin yazdığınız kod içerisinde değişiklik yaparak süzülenlerin karşılığını buldurabilirsek iyi olur.yani süzme koduna mümkünse ilave olmasın. teşekkür ederim
 

Ekli dosyalar

İlaveyi kırmızı ile işaretledim.

Kod:
Private Sub CommandButton1_Click()

 Dim i As Long, c As Range, sat As Long, sut As Integer
 
    Range("e5:e" & Rows.Count).ClearContents 'sayfa1deki e sütununu temizle'
 
    With Sheets("Sayfa3")
        For i = 5 To Cells(Rows.Count, "b").End(xlUp).Row
            [COLOR=red]If Rows(i).EntireRow.Hidden = False Then
[/COLOR]    
               Set c = .Range("b:b").Find(Cells(i, "b"), , xlValues, xlWhole) 'sayfa1deki b sütununu sayfa3 b sütununda ara'
               If Not c Is Nothing Then sat = c.Row
    
               Set c = .Rows(1).Find(Cells(i, "d"), , xlValues, xlWhole)
               If Not c Is Nothing Then sut = c.Column
    
               Cells(i, "e") = .Cells(sat, sut) 'bulunan değerleri sayfa1 e sütununa yaz'
            [COLOR=red]End If
[/COLOR]        Next i
    End With

End Sub
 
Hocam çok teşekkür ederim
 
Geri
Üst