Excelde böyle bir arama ve başvuru sorununu nasıl çözerim?

Katılım
16 Kasım 2017
Mesajlar
70
Excel Vers. ve Dili
2010 türkçe
Efendim A ve B den oluşan 50 hücreli iki sütunum var.bunlardan A sütununda boş hücrelerde "-" (yok anlamında tire işareti) ve dolu olan hücrelerde ise LGT,SEV,MOD kelimeleri var.Ama bu kelimeler atl alta belli bir düzen içerisinde değil;örneğin hücre içerikleri "LGT,LGT,LGT,SEV,MOD,MOD,MOD,MOD,-,-,-,SEV,-,-,LGT,LGT,-,-"gibi.B sütunu da tamamen sayılarla dolu.Ben A sütunundan LGT,SEV ve MOD ları bulup karşısındaki sayıyı aralığı belirtecek şekilde yazdırmak istiyorum,örnek;lgt=100,lgt=200,lgt=300,lgt=400 olsun bunları
"100-400 LGT " olarak olarak almak istiyorum.Nasıl yapacağımı hiç bilemiyorum. Üstatlardan yardım rica ediyorum.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Kodlar A1:A50 arasında ve sayılar B1:B50 arasında ise C1 hücresine aşağıdaki DİZİ formülünü yazınız. Formülü yazınca ENTER ile değil CTRL+SHIFT+ENTER ile hücreden çıkınız. Bu durumda formülün başında { ve sonunda } işaretleri çıkar. Bu şekilde yapmazsanız doğru formül çalışmaz. Formülü bu şekilde C1'e yazdıktan sonra aşağıdaki hücrelere kopyalayabilirsiniz:

Kod:
=MİN(EĞER($A$1:$A$50=A1;$B$1:$B$50))&"-"&MAK(EĞER($A$1:$A$50=A1;$B$1:$B$50))&" "&A1
Eğer - olanların karşısı boş kalsın istiyorsanız aşağıdaki formülü yine DİZİ formülü şeklinde kullanın:

Kod:
=EĞER(A1<>"-";MİN(EĞER($A$1:$A$50=A1;$B$1:$B$50))&"-"&MAK(EĞER($A$1:$A$50=A1;$B$1:$B$50))&" "&A1;"")
 
Son düzenleme:
Katılım
16 Kasım 2017
Mesajlar
70
Excel Vers. ve Dili
2010 türkçe
Hocam öncelikle cevabınız için teşekkür ederim.Verdiğiniz formülü uyguladım.Ama benim yapmam gereken tam olarak bu değil,sanırım ben sorunumu tam olarak açıklayamadım.İzninizle daha ayrıntılı açıklamak istiyorum.Yazacağım ifadelerden ilk ifadeyi "A" sütunu,ikinci ifadeyi de "B" sütunu olarak değerlendirelim. LGT=100,LGT=200,LGT=300,LGT=400,-=500,-=600;SEV=700,MOD=800,MOD=900,MOD=1000,MOD=1100,-=1200,-=1300,-=1400,SEV=1500,SEV=1600,-=1700,LGT=1800,LGT=1900,-=2000,-=2100 olsun. Benim yapmaya çalıştığım şu;"100-400 LGT( burada 100,-.400, ve LGT ifadeleri ayrı ayrı ve yan yana hücrelere yazılması gerekiyor),700-700 SEV,800-1100 MOD,1500-1600 SEV,1800-1900 LGT olarak yazması gerekiyor.Sizden aldığım formül ise örn.LGT yi ilk gördüğü yer ile son gördüğü yerin aralığını veriyor;"100-1900 lgt" gibi.Bu konuda ben bir çözüm bulamadım,yardımlarınızı rica ediyorum.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Örnek dosya paylaşırsanız iyi olur. Dosyada hem örnek liste hem de örnek çözüm oldun ki olayı anlayabilelim.
 
Katılım
16 Kasım 2017
Mesajlar
70
Excel Vers. ve Dili
2010 türkçe
hocam dosyayı paylaşmaya uğraşıyorum da, ekle yada attach gibi bir yer bulamadım.nasıl eklemem gerektiğini de bilemiyorum.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Örnek dosyayı dosya yükleme sitelerinden birine (dosya.tc vs) yükleyip linkini burada paylaşabilirsiniz.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki kodları bir modüle kopyalayıp deneyiniz:

Kod:
Sub liste()
    
eski = WorksheetFunction.Max(4, Cells(Rows.Count, "Q").End(3).Row + 1)
Range("Q4:T" & eski).Clear

son = Cells(Rows.Count, "E").End(3).Row

For i = 2 To son
    yeni = WorksheetFunction.Max(4, Cells(Rows.Count, "Q").End(3).Row + 1)
    If Cells(i, "E") <> "-" Then
        For j = i + 1 To son
            If Cells(j, "E") <> Cells(j + 1, "E") Then
                Cells(yeni, "Q") = Cells(i, "H")
                Cells(yeni, "R") = "-"
                Cells(yeni, "S") = Cells(j, "H")
                Cells(yeni, "T") = Cells(i, "E")
                i = j
                j = son
            End If
        Next
    End If
Next

    With Range("Q4:T" & yeni - 1).Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Range("Q4:T" & yeni - 1).Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Range("Q4:T" & yeni - 1).Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
    With Range("Q4:T" & yeni - 1).Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlMedium
    End With
Range("Q4:Q" & yeni - 1).Font.Color = vbRed
Range("S4:S" & yeni - 1).Font.Color = vbRed
Range("R4:R" & yeni - 1).Font.Color = vbBlue
Range("T4:T" & yeni - 1).Font.Color = vbBlue
Range("Q4:T" & yeni - 1).Font.Bold = True
Range("S4:S" & yeni - 1).HorizontalAlignment = xlLeft
Range("Q4:T" & yeni - 1).VerticalAlignment = xlCenter
Columns("Q:T").EntireColumn.AutoFit
    
End Sub
 
Son düzenleme:
Katılım
6 Mart 2005
Mesajlar
6,233
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
22/12/2022
çok teşekkür ederim.ben bu formülü baya uğraştım ama yazamamıştım.sizden öğrenmiş oldum.sağ olun....
Rica ederim.Çözümün işe yaradığına sevindim.Dönüş yaptığınız için teşekkür ederim.Kolay gelsin.
 
Üst