• DİKKAT

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

En küçük değerin ikincisi

Katılım
11 Kasım 2005
Mesajlar
454
Excel Vers. ve Dili
Windows 2011 TR
MS Office 365 TR - 64bit

VBA, Selenium ve VBS
Merhabalar,
Ekteki dosyada daha açık bir şekilde anlaşılacağı gibi, yatay arama yaptığım verilerin en küçüğü ve 2. en küçüğünü buluyorum. Ancak, en küçük değerden 2 tane olur ise, 1 değerin aynısını veriyor. Şöyleki, J sütununda bu değerin hangi kategoride olduğunu Yani A,B,C yada D şeklinde yazmasını istiyorum.

aslında tam olarak anlatamadığımı biliyorum. Ancak dosyaya bakınca anlaşılacağını umuyorum
yardımlarınızı bekliyorum. Teşekürler
 

Ekli dosyalar

Merhaba,

Tag'daki dizi formülünü kullanabilirsiniz.

Kod:
=KÜÇÜK(EĞER(KAÇINCI($C5:$F5;$C5:$F5;0)=DEVRİK_DÖNÜŞÜM(SATIR($1:$4));$C5:$F5;"");G$4)
 
Merhaba,

Tag'daki dizi formülünü kullanabilirsiniz.

Kod:
=KÜÇÜK(EĞER(KAÇINCI($C5:$F5;$C5:$F5;0)=DEVRİK_DÖNÜŞÜM(SATIR($1:$4));$C5:$F5;"");G$4)

Merhabalar, formülü J5 hücresine giriyorum. Ama hata veriyor. dosya üzerinde yaparsanız sevinirim
 
Merhaba.
Sayın kuvari, cevabında; formülün DİZİ FORMÜLÜ olduğunu belirtmiş, sanırım fark etmediniz.

Formül metnini hücreye yapıştırdıktan sonra doğrudan ENTER DEĞİL
CTRL+SHIFT+ENTER
tuşlarına birlikte basarak formül girişini tamamlamalısınız.
 
Merhaba.
Sayın kuvari, cevabında; formülün DİZİ FORMÜLÜ olduğunu belirtmiş, sanırım fark etmediniz.

Formül metnini hücreye yapıştırdıktan sonra doğrudan ENTER DEĞİL
CTRL+SHIFT+ENTER
tuşlarına birlikte basarak formül girişini tamamlamalısınız.

evet dikatimden kaçtı, yazmış olduğunuz formülü J5 hücresine uyguladım ve D5 ve F5 hücrelerini aynı yaptım. Ancak formül sonucu olarak 5. satırdaki (d5 yada F5 hücresindeki değeri bana veriyor. ben ise o değerin üzerindeki yani 4. satırdaki A yada b Yada C yada D yazması gerekiyor.
teşekkür ederim

Dosyayı kaydettim
 

Ekli dosyalar

Son düzenleme:
Merhabalar,
Açıklamalardan anladığım kadarıyla alternatif olsun.
Kod:
=İNDİS(C4:F4;KAÇINCI(KÜÇÜK(C5:F5;[COLOR="Red"]2[/COLOR]);C5:F5;))

Not: Kırmızı alan kaçıncı en küçük sayıya göre değer getireceğini belirler.

Saygılar,
Hay marja!
 
Merhabalar,
Açıklamalardan anladığım kadarıyla alternatif olsun.
Kod:
=İNDİS(C4:F4;KAÇINCI(KÜÇÜK(C5:F5;[COLOR="Red"]2[/COLOR]);C5:F5;))

Not: Kırmızı alan kaçıncı en küçük sayıya göre değer getireceğini belirler.

Saygılar,
Hay marja!

teşekkürler, ancak en küçük 1. ve en küçük 2. değeri bulmak değil eğer 2 tane en küçük değer birbirine eşit ise dosyadada görüldüğü gibi 1. küçük değerin 4. satırdaki adını 2. küçük dediğimiz (yani 1. küçük ile aynıda olsa) değerin 4. satırdaki adını yazmasını istiyorum.
sizin yapmış olduğunuz formülde, değerle r eşit ise bunu yapmıyor.
 
Merhaba,

Tag'daki dizi formülünü kullanabilirsiniz.

Kod:
=KÜÇÜK(EĞER(KAÇINCI($C5:$F5;$C5:$F5;0)=DEVRİK_DÖNÜŞÜM(SATIR($1:$4));$C5:$F5;"");G$4)

Sayın kuvari, size cevap veriyorum diye baran' vermişim. tekrar incelerseniz sevinirim
 
Tekrardan merhaba,
Kod:
=EĞER(EĞERSAY(C5:F5;MİN(C5:F5))>1;
  İNDİS(C$4:F$4;KÜÇÜK(EĞER(C5:F5=MİN(C5:F5);
    SÜTUN(C5:F5)-SÜTUN(C5)+1);2));
      İNDİS(C$4:F$4;
    KÜÇÜK(EĞER(C5:F5=KÜÇÜK(C5:F5;2);
  SÜTUN(C5:F5)-SÜTUN(C5)+1);
1)))
[COLOR="Blue"]Formül dizi formüldür. CTRL+SHIFT+ENTER ile tamamlayınız.[/COLOR]
Saygılar,
 
Son düzenleme:
Tekrardan merhaba,
Kod:
=İNDİS(C4:F4;;
  KÜÇÜK(EĞER((MİN(EĞER(C5:F5<>"";C5:F5)));
SÜTUN(A1:D1));SÜTUN([COLOR="Red"]B1[/COLOR])))
[COLOR="Blue"]Formül dizi formülüdür.CTRL+SHIFT+ENTER ile tamamlayınız.[/COLOR]

Not: Kırmızı alan kaçıncı değeri getireceğini belirler. C1 yazarsanız 3. değer A1 yazarsanız 1. değer. (sorunuzu doğru anladıysam.)

Saygılar,

formülü çalıştıramadım. ve anlamadım. formül içindeki SÜTUN(A1:D1)) derken ne anlama geldiğinide anlamadım. eğer dosya eklerseniz sevinirim
 
Dosya ekleme yetkim yok.Sorunuzu doğru anladıysam gerekli açıklama yaptığımı düşünüyorum.

Harici bağlantı şeklinde de dosya yükleyemiyorum. Diğer Arkadaşlar yardımcı olacaklardır.

Saygılar,
 
9 numaralı mesaj içerisinde gerekli düzeltme yapılmıştır.
 
9 numaralı mesaj içerisinde gerekli düzeltme yapılmıştır.

malesef olmadı. uğraşınız için teşekkür ederim
eğer eşit 2 değer var ise tamam. ama her biri farklı ise sonuç hatalı çıkıyor
 
Sayın Mozdem,
Bu kadar kolay kestirip atmasanız da bizde rahat bir çay içsek sorunuzu çözmek yerine. :)
1. sorum;
C5:F5 aralığına sırasıyla 1 - 9 - 8 - 7 girişlerini yapınız.
Sonuç ne olacak ? (bana göre Firma1)

2.sorum;
C5:F5 aralığına sırasıyla 1 - 9 - 1 - 7 girişlerini yapınız.
Sonuç ne olacak ? (bana göre Firma3)
 
Sayın bzace ilgileniyor ama ben de aşağıdaki kodları hazırlamıştım. Bu türden sorulara formülle çözüm bulamıyorum maalesef. Kodları ilgili sayfanın kod bölümüne yapıştırırsanız C4:F(son satır) arasındaki değişikliklerde tabloyu günceller:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
son = Cells(Rows.Count, "A").End(3).Row
If Intersect(Target, Range("C5:F" & son)) Is Nothing Then Exit Sub
Cells(Target.Row, "G") = WorksheetFunction.Min(Range(Cells(Target.Row, "C"), Cells(Target.Row, "F")))
Cells(Target.Row, "H") = WorksheetFunction.Index([C4:F4], WorksheetFunction.Match(Cells(Target.Row, "G"), _
Range(Cells(Target.Row, "C"), Cells(Target.Row, "F")), 0))
If WorksheetFunction.CountIf(Range(Cells(Target.Row, "C"), Cells(Target.Row, "F")), Cells(Target.Row, "G")) > 1 Then
For j = 3 To 7
    If Cells(Target.Row, j) <> "" And Cells(Target.Row, j) = WorksheetFunction.Min(Range(Cells(Target.Row, "C"), _
    Cells(Target.Row, "F"))) And Cells(Target.Row, "H") <> Cells(4, j) Then
        Cells(Target.Row, "I") = Cells(Target.Row, j)
        Cells(Target.Row, "J") = Cells(4, j)
        j = 7
    End If
Next
Else
Cells(Target.Row, "I") = WorksheetFunction.Small(Range(Cells(Target.Row, "C"), Cells(Target.Row, "F")), 2)
Cells(Target.Row, "J") = WorksheetFunction.Index([C4:F4], WorksheetFunction.Match(Cells(Target.Row, "I"), _
Range(Cells(Target.Row, "C"), Cells(Target.Row, "F")), 0))
End If
End Sub

Sayın bzace, araya girmiş gibi oldum, kusura bakmayın.
 
Yusuf Bey, araya girmek mi :) alttan yetişecek olan gençlerimiz için bolca alternatif olsun.

Şurada sorulara cevap vermeye çalışan belli başlı kişiler olmazsa Excel ülkemiz için içler acısı alttan yetişecek olan nesil ya interneti keşfetmedi yada yardım etmeyi sevmiyor. :)

Bu arada Sayın Mozdem, istediğiniz sonucu alacağınız uyarlamayı yaptım. Hata varsa sakin kafa ile tekrar bir şeyler yapmaya çalışırım.
 
Sayın Mozdem,
Bu kadar kolay kestirip atmasanız da bizde rahat bir çay içsek sorunuzu çözmek yerine. :)
1. sorum;
C5:F5 aralığına sırasıyla 1 - 9 - 8 - 7 girişlerini yapınız.
Sonuç ne olacak ? (bana göre Firma1)

2.sorum;
C5:F5 aralığına sırasıyla 1 - 9 - 1 - 7 girişlerini yapınız.
Sonuç ne olacak ? (bana göre Firma3)

Daha örnekler ve basit bir dille anlatmaya çalışayım.
c5 ila F5 yani firma1......firma4 kadar bana malzeme teklifi verdiğini düşünelim.

Hangi firma en küçük değeri verdi ise g5 hücresine verilen değer H5 hücresine firma adını yazdırıyorum. Eğer bu firmada bir sorun oluşur ise 2. küçük teklifi veren firmanında verdiği değeri I5 hücresine firma adınıda J5 hücresine yazdırıyorum.

Firmaların verdiği teklifler birbirinden farklı ise "Küçük fonksiyonu ile çözüyorum. Ancak bazan 2 firma aynı en küçük değeri veriyor. o zaman benim yapmış olduğum formülde her iki hücrede de H5 ve J5 sütunlarında aynı firma adları çıkıyor.
Bu durumda 1 sorunun Cevabı: H5 =Firma1 -- I5=Firma4 olmalı
2. sorunun cevabı ise H5 =Firma1 -- I5=Firma3 olmalı

umarım anlatabilmişimdir. Teşekkür ederim
 
Sayın bzace ilgileniyor ama ben de aşağıdaki kodları hazırlamıştım. Bu türden sorulara formülle çözüm bulamıyorum maalesef. Kodları ilgili sayfanın kod bölümüne yapıştırırsanız C4:F(son satır) arasındaki değişikliklerde tabloyu günceller:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
son = Cells(Rows.Count, "A").End(3).Row
If Intersect(Target, Range("C5:F" & son)) Is Nothing Then Exit Sub
Cells(Target.Row, "G") = WorksheetFunction.Min(Range(Cells(Target.Row, "C"), Cells(Target.Row, "F")))
Cells(Target.Row, "H") = WorksheetFunction.Index([C4:F4], WorksheetFunction.Match(Cells(Target.Row, "G"), _
Range(Cells(Target.Row, "C"), Cells(Target.Row, "F")), 0))
If WorksheetFunction.CountIf(Range(Cells(Target.Row, "C"), Cells(Target.Row, "F")), Cells(Target.Row, "G")) > 1 Then
For j = 3 To 7
    If Cells(Target.Row, j) <> "" And Cells(Target.Row, j) = WorksheetFunction.Min(Range(Cells(Target.Row, "C"), _
    Cells(Target.Row, "F"))) And Cells(Target.Row, "H") <> Cells(4, j) Then
        Cells(Target.Row, "I") = Cells(Target.Row, j)
        Cells(Target.Row, "J") = Cells(4, j)
        j = 7
    End If
Next
Else
Cells(Target.Row, "I") = WorksheetFunction.Small(Range(Cells(Target.Row, "C"), Cells(Target.Row, "F")), 2)
Cells(Target.Row, "J") = WorksheetFunction.Index([C4:F4], WorksheetFunction.Match(Cells(Target.Row, "I"), _
Range(Cells(Target.Row, "C"), Cells(Target.Row, "F")), 0))
End If
End Sub

Sayın bzace, araya girmiş gibi oldum, kusura bakmayın.

Öncelikle çok teşekkür ederim
Aslında bu işi formülle yapmak istiyordum. Sizin kodlarınızı çalıştırınca gayet hızlı ve güzel olduğunu gördüm. Tebrik ediyorum Teşekkür ederim, Ellerine sağlık
 
Daha örnekler ve basit bir dille anlatmaya çalışayım.
c5 ila F5 yani firma1......firma4 kadar bana malzeme teklifi verdiğini düşünelim.

Hangi firma en küçük değeri verdi ise g5 hücresine verilen değer H5 hücresine firma adını yazdırıyorum. Eğer bu firmada bir sorun oluşur ise 2. küçük teklifi veren firmanında verdiği değeri I5 hücresine firma adınıda J5 hücresine yazdırıyorum.

Firmaların verdiği teklifler birbirinden farklı ise "Küçük fonksiyonu ile çözüyorum. Ancak bazan 2 firma aynı en küçük değeri veriyor. o zaman benim yapmış olduğum formülde her iki hücrede de H5 ve J5 sütunlarında aynı firma adları çıkıyor.
Bu durumda 1 sorunun Cevabı: H5 =Firma1 -- I5=Firma4 olmalı
2. sorunun cevabı ise H5 =Firma1 -- I5=Firma3 olmalı

umarım anlatabilmişimdir. Teşekkür ederim


Dosyanız ekte.



.
 

Ekli dosyalar

Geri
Üst