• DİKKAT

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

koşula bağlı olarak değer bulmak

kozman

Altın Üye
Katılım
2 Şubat 2014
Mesajlar
80
Excel Vers. ve Dili
Windows 8, türkçe
Arkadaşlar hepinize kolay gelsin aşağıda yazmış olduğum sorunu çözemedim yardımcı olursanız sevinirim

G1 hücresine 2 yazdığımda A sütununda ki 2' yi bulup (yani A3 hücresi) 2'nin dahil olduğu satırdaki dolu hücreyi seçip bu 8 sayısı ( Yani D2 hücresi) bu hücrenin sütununda ki İsmail değerini vermesi gerekiyor. Formül H1 hücresinde olacak

Değerler değişkendir.
 

Ekli dosyalar

Merhaba

Bu kodları deneyin.
Kod:
Sub Düğme1_Tıklat()
For Each hucre In Range("a2:a10")
 If hucre = Cells(1, "G") Then
    For Each hucre1 In Range("B" & hucre.Row & ":F" & hucre.Row)
    'For Each hucre1 In Range(Cells(hucre.Row, "b"), Cells(hucre.Row, "F"))
      If hucre1 <> "" Then Cells(1, "H") = Cells(1, hucre1.Column)
    Next hucre1
 End If
Next hucre
End Sub
 
Merhaba

Bu kodları deneyin.
Kod:
Sub Düğme1_Tıklat()
For Each hucre In Range("a2:a10")
 If hucre = Cells(1, "G") Then
    For Each hucre1 In Range("B" & hucre.Row & ":F" & hucre.Row)
    'For Each hucre1 In Range(Cells(hucre.Row, "b"), Cells(hucre.Row, "F"))
      If hucre1 <> "" Then Cells(1, "H") = Cells(1, hucre1.Column)
    Next hucre1
 End If
Next hucre
End Sub

hocam çok teşekkür ederim ama ben makrodan anlamıyorum
 
Makroya bir ucundan başlasanız iyi olur. ben de nerdeyse hiç bilmiyordum bu site sayesinde kendi ihtiyacımı görüyorum hem de çoğu zaman burda arkadaşlara yardımcı olmaya çalışıyorum.

Arkadaşın makrosu için Alt+F11 yapıp çıkan yerde Insert/Module yapın ve verdiği kodları çıkan sayfaya yapıştırın. Daha sonra Makrolardan bu makroyu çalıştırın. Konuyla ilgili ayrıntılı bilgi için makro ekleme ve çalıştırmayla ilgili araştırma yapabilirsiniz.

Ben de alternatif bir kod hazırladım. Benimkisi biraz daha basit. Sayfa1 sekmesine sağ tıklayıp Kod görüntüle deyin ve çıkan sayfaya bu kodları yapıştırın. Daha sonra G1 hücresini her değiştirdiğinizde makro otomatik çalışacak ve H1 hücresine istediğinzi sonucu yazdıracaktır.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [G1]) Is Nothing Then Exit Sub
son = Cells(Rows.Count, 1).End(3).Row
For i = 2 To son
    If Cells(i, 1) = Target Then
        For j = 1 To Cells(i, 1).End(xlToRight).Column
            If Cells(i, j) <> "" Then
                [H1] = Cells(1, j)
            End If
        Next
    End If
Next
End Sub
 
Son düzenleme:
Makroya bir ucundan başlasanız iyi olur. ben de nerdeyse hiç bilmiyordum bu site sayesinde kendi ihtiyacımı görüyorum hem de çoğu zaman burda arkadaşlara yardımcı olmaya çalışıyorum.

Arkadaşın makrosu için Alt+F11 yapıp çıkan yerde Insert/Module yapın ve verdiği kodları çıkan sayfaya yapıştırın. Daha sonra Makrolardan bu makroyu çalıştırın. Konuyla ilgili ayrıntılı bilgi için makro ekleme ve çalıştırmayla ilgili araştırma yapabilirsiniz.

Ben de alternatif bir kod hazırladım. Benimkisi biraz daha basit. Sayfa1 sekmesine sağ tıklayıp Kod görüntüle deyin ve çıkan sayfaya bu kodları yapıştırın. Daha sonra G2 hücresini her değiştirdiğinizde makro otomatik çalışacak ve H1 hücresine istediğinzi sonucu yazdıracaktır.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [G1]) Is Nothing Then Exit Sub
son = Cells(Rows.Count, 1).End(3).Row
For i = 2 To son
    If Cells(i, 1) = Target Then
        For j = 1 To Cells(i, 1).End(xlToRight).Column
            If Cells(i, j) <> "" Then
                [H1] = Cells(1, j)
            End If
        Next
    End If
Next
End Sub

hocam her değer girdiğimde makroyu çalıştır mı diyeceğim
 
Son düzenleme:
G1 hücresini her değiştirdiğinizde H1 hücresinde aradığınız sonucu verecektir.
 
G1'e yazdığınız A sütununda yoksa H1'in boş kalması için kodları değiştirdim:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [G1]) Is Nothing Then Exit Sub
son = Cells(Rows.Count, 1).End(3).Row
For i = 2 To son
    If Cells(i, 1) = Target Then
        For j = 1 To Cells(i, 1).End(xlToRight).Column
            If Cells(i, j) <> "" Then
                [H1] = Cells(1, j)
            End If
        Next
    Else
        [H1] = ""
    End If
Next
End Sub
 
G1'e yazdığınız A sütununda yoksa H1'in boş kalması için kodları değiştirdim:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [G1]) Is Nothing Then Exit Sub
son = Cells(Rows.Count, 1).End(3).Row
For i = 2 To son
    If Cells(i, 1) = Target Then
        For j = 1 To Cells(i, 1).End(xlToRight).Column
            If Cells(i, j) <> "" Then
                [H1] = Cells(1, j)
            End If
        Next
    Else
        [H1] = ""
    End If
Next
End Sub

hocam yardımlarınız için teşekkürler fakat ben bu makro işini beceremeyeceğim Hüseyin hocanın videolarını da izledim olmuyor bana diğer türlü yardım ederseniz sevinirim
 
Merhaba
dosyayı inceleyin.

Sayfa1 de hücreye rakam girince
Sayfa2 de butona basınca çalışır.
 

Ekli dosyalar

Merhaba
dosyayı inceleyin.

Sayfa1 de hücreye rakam girince
Sayfa2 de butona basınca çalışır.

hocam gerçekten çok teşekkür ediyorum elinize sağlık benim için zaman harcadınız. fakat bunu formül yoluyla çözemezmiyiz; şundan dolayı formül yoluyla istiyorum A sütünunu ve diğer başka sütunları diğer çalışma kitaplarından alabilirim ve her defasında sizleri rahatsız etmek istemiyorum makro benim için şu aşamada çok zor
 
hocam gerçekten çok teşekkür ediyorum elinize sağlık benim için zaman harcadınız. fakat bunu formül yoluyla çözemezmiyiz; şundan dolayı formül yoluyla istiyorum A sütünunu ve diğer başka sütunları diğer çalışma kitaplarından alabilirim ve her defasında sizleri rahatsız etmek istemiyorum makro benim için şu aşamada çok zor

arkadaş yukarıda ki sorunumu makrosuz çözebilecek arkadaş varmı.
 
Makro sizin için daha uygun diye düşünüyorum. Çünkü makro son dolu hücreye göre ayarlanmıştır. Siz başka yerden kopyaladığınız verileri dosyanıza yapıştırdığınızda da makro düzgünce çalışmaya devam eder. Ancak makro olursa 50 satıra göre ayarlandığında 51. satırda çalışmaz. Eğer A sütunu G1 ve H1 hücreleriniz sabitse (yani başka yerden kopyaladığınızda bile hep aynı sütunda arama yapılıp hep aynı satırdaki veri hep aynı hücreye kaydedilecekse makroyu kullanmanızı öneririm.
 
Makro sizin için daha uygun diye düşünüyorum. Çünkü makro son dolu hücreye göre ayarlanmıştır. Siz başka yerden kopyaladığınız verileri dosyanıza yapıştırdığınızda da makro düzgünce çalışmaya devam eder. Ancak makro olursa 50 satıra göre ayarlandığında 51. satırda çalışmaz. Eğer A sütunu G1 ve H1 hücreleriniz sabitse (yani başka yerden kopyaladığınızda bile hep aynı sütunda arama yapılıp hep aynı satırdaki veri hep aynı hücreye kaydedilecekse makroyu kullanmanızı öneririm.

hocam haklısınız da makroda ki terimlerin hepsi yabancı inanın ki verdiğiniz makroları kopyalamayı bile başaramıyorum kaldı ki onun içinde ufak değişiklikler yapmam icap edecek nasıl çözeceğim o yüzden formül istiyorum.

Mesala A sütununu başka bir çalışma kitabından alacağım ve 2732 satır yine g1, h1 hücreleri ise g1:g2 ...g6 ve H1...H6 ya kadar olacak Yani verilecek formülleri bunların hepsine uygulayacağım
 
Son düzenleme:
illa formül istiyorsanız aşağıdakini kullanabilirsiniz:

Kod:
=İNDİS($B$1:$F$1;KAÇINCI(ARA(2;1/(DOLAYLI(ADRES(KAÇINCI(G1;$A$2:$A$10;0)+1;2;1;1;)&":"&ADRES(KAÇINCI(G1;$A$2:$A$10;0)+1;6;1;1;))>0);DOLAYLI(ADRES(KAÇINCI(G1;$A$2:$A$10;0)+1;2;1;1;)&":"&ADRES(KAÇINCI(G1;$A$2:$A$10;0)+1;6;1;1;)));DOLAYLI(ADRES(KAÇINCI(G1;$A$2:$A$10;0)+1;2;1;1;)&":"&ADRES(KAÇINCI(G1;$A$2:$A$10;0)+1;6;1;1;));0))
 
Bu arada ilk sayfada verdiğim ikinci kodlar istediğiniz gibi olmamış. İlk verdiğim kodlar düzgün çalışıyor. Aşağıdaki kodlar daha iyi oldu:
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [G1]) Is Nothing Then Exit Sub
[H1] = ""
son = Cells(Rows.Count, 1).End(3).Row
For i = 2 To son
    If Cells(i, 1) = Target Then
        For j = 1 To Cells(i, 1).End(xlToRight).Column
            If Cells(i, j) <> "" Then
                [H1] = Cells(1, j)
            End If
        Next
    End If
Next
End Sub
 
Bu arada ilk sayfada verdiğim ikinci kodlar istediğiniz gibi olmamış. İlk verdiğim kodlar düzgün çalışıyor. Aşağıdaki kodlar daha iyi oldu:
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [G1]) Is Nothing Then Exit Sub
[H1] = ""
son = Cells(Rows.Count, 1).End(3).Row
For i = 2 To son
    If Cells(i, 1) = Target Then
        For j = 1 To Cells(i, 1).End(xlToRight).Column
            If Cells(i, j) <> "" Then
                [H1] = Cells(1, j)
            End If
        Next
    End If
Next
End Sub

hocam teşekkür ederim emeğinize sağlık son bir sorum olacak size vermiş olduğunuz formül birleştirilmiş hücrelerde çalışırmı
 
Yaptığım denemede birleştirilmiş hücrelerde sol üst köşedeki ilk hücreyi dikkate alıyor. Yani E5 ve F5 hücrelerini birleştirip hem makroyla hem de formülle F sütunundaki sonucu almak istiyorsanız yani F1'deki ismi bulmak istiyorsanız F1'i bulmuyor, E1'deki ismi veriyor. Benim bildiğim excel mantığı da bu şekilde işliyor zaten.
 
Yaptığım denemede birleştirilmiş hücrelerde sol üst köşedeki ilk hücreyi dikkate alıyor. Yani E5 ve F5 hücrelerini birleştirip hem makroyla hem de formülle F sütunundaki sonucu almak istiyorsanız yani F1'deki ismi bulmak istiyorsanız F1'i bulmuyor, E1'deki ismi veriyor. Benim bildiğim excel mantığı da bu şekilde işliyor zaten.

anladığım kadarıyla birleştirilmiş hücrelerden vaz geçmem gerekiyor, başka bir sorunumu çözmek için oluşturduğum alttaki formülde bu yüzden çalışmıyor.
Peki hocam hem sizin bana verdiğiniz formül hemde benim aşağıda ki yapmaya çalıştığım formülün birleştirilmiş hücreler için başka çözümleri olabilirmi.

=Max(EĞER(($A$18:$A$2729=M39)*($AF$17:$AL$2728<>0);$AF$17:$AL$2728))
 
Sorunusu örnek dosyayı sorunuza uydurarak sorarsanız daha iyi olur. Böyle ne yapmak istediğinizi anlamadım maalesef.
 
Geri
Üst