Listede Parca Al ve Mukerrer (Yineleyen) ve Ilk Kez Yazilanlari Alfabetik Yazdirmak

Katılım
21 Kasım 2012
Mesajlar
172
Excel Vers. ve Dili
2013 - TR & EN
[Sayfa2'den Itibaren, Sorunun Alternatif Makro ve Formul Cozumlerini Bulabilirsiniz Merak Eden Varsa Sayet]

Merhabalar. Ekte dosya paylastim konu ile ilgili Aslinda sitede bu konuyla ilgil icok fazla paylasim var fakat kendime uyarlayamadim bir turlu ve yeniden konu acmak zorunda kaldim. Basitce anlatirsam:
A1 Sutununda bircok adres yazili ve kimi adres kendini tekrarlayabiliyor ve her gun yeni adresler eklenebiliyor bu listeye. Yani Bu listede hem kendini tekrarlayan hem de ilk defa 1 kez yazilmis adresler yer alabiliyor.

Benim Yapmak istedigim ise asagidaki formul ile bu her adresin icinden cekecegim city isimlerinden kendini tekrarlayanlari ve kendini tekrarlamayip sadece bir adet bulunanlari B1 sutununda 1 kez yazdirmak istiyorum.

Ornegin A1: ADRESLER (Baslik)
A2: X1 Avenue, Mechanicville, NY
A3: Selami Avenue, Clifton Park, NY
A4: Osman Sokak, Meydan, NY
A5: ali avenue, Mechanicville, NY
A6: suleyman sokak, clifton park, NY
A7: meydan sokak, Schenectady, NY
A8: foam street, Schenectady, NY
A9: 2222 West St., Apt. B, Albany, NY
A10: 50055000 Scott Avenue, Castleton On Hudson, NY
A11: ....
A12: ....


Bu sekilde giden bir liste her defasinda yeni adresler ekleniyor ve bu adresler kendini tekrarlayabiliyor veya bir kez yazilmis olabiliyor listede.

Oyle bir formul olacak ki ", NY" ifadesinden hemen once gelenleri yazdirmayi ISTEDIGIM B SUTUNUNDA SONUC LISTESI soyle olacak:
B2: Mechanicville
B3: Clifton Park
B4: Meydan
B5: Schenectady
B6: Albany
B7: Castleton On Hudson


Asagidaki Formulu de katarak ben A2 hucresindeki adresten Mechanicville kelimesini cekip o kelime listede tekrarliyorsa veya tekrarlamiyorsa o degeri bir kereye mahsus B sutununda yazdirmak istiyorum.

Parca almak icin kullandigim formul zaten calisiyor su sekilde: bu formulu de katarak tum adresi degil de sadece parca aldigim NY'dan hemen onceki kelimeyi parca alip o kelimenin mukerrer kayit ise bir kez, mukerrer kayit degil ise yin bir kereye mahsus B sutununda yazdirmak istiyorum . Icinde Mechanicville olan baska adres geldiginde o adresi yeniden yazmayacak ki zaten mechanicville yazilmis oldugundan onceden es gececek.

Parca almak icin kullandigim formul:
Kod:
=EĞERHATA(PARÇAAL(SAĞDAN(PARÇAAL(A2,1,MBUL(", "&SAĞDAN(A2,UZUNLUK(A2)-BUL("*",YERİNEKOY(A2," ","*",UZUNLUK(A2)-UZUNLUK(YERİNEKOY(A2," ",""))))),A2,1)-1),MBUL(", ",A2,1)),MBUL(", ",SAĞDAN(PARÇAAL(A2,1,MBUL(", "&SAĞDAN(A2,UZUNLUK(A2)-BUL("*",YERİNEKOY(A2," ","*",UZUNLUK(A2)-UZUNLUK(YERİNEKOY(A2," ",""))))),A2,1)-1),MBUL(", ",A2,1)))+1,2000),SAĞDAN(PARÇAAL(A2,1,MBUL(", "&SAĞDAN(A2,UZUNLUK(A2)-BUL("*",YERİNEKOY(A2," ","*",UZUNLUK(A2)-UZUNLUK(YERİNEKOY(A2," ",""))))),A2,1)-1),MBUL(", ",A2,1)))
DOSYA LINK>> http://s6.dosya.tc/server/25la2f/hayaletinizi.soru4.xlsx.html


Previously Message #10:
Kalip aslinda hep ama hep ayni. Tum adresler ", NY" ile bitiyor ve ben ", NY" ifadesinden hemen once iki virgul arasindaki ifadeyi almak istiyorum ve bu tum ifadeler icinde mukerrer kayit kontrolu yapmak istiyoru. Tamam peki yardimci sutun kullanmak istersek mesela B sutununda, A sutununda yer alan "xx Scott Avenue, Castleton On Hudson, NY" gibi bir adresin icinden ", NY" den hemen once gelen iki vir gul arasoindaki kelimeyi parca al ile "Castleton On Hudson" yazdirip , B sutunundaki sonuclar icinden mukerrer kayitlari ve bir kez yazilanlari , C sutununa 1 kez yazdirmak . bu mumkun mudur ?
 
Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.
Birkaç şey sorayım;

-- "İki virgül arası" durumu sabit midir?
-- Boşluksuz bir liste mi elde etmek istiyorsunuz?
-- Veri yığınının hacmi ne kadardır acaba?
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Tekrar merhaba.
Aşağıdaki formül ile, (boşluklu liste elde etmek sorun olmuyorsa) her bir yerleşim yeri adı ilk rastlandığı satırda olacak şekilde listelenir.
Kod:
=EĞER(A2="";"";EĞER(EĞERSAY($B$1:B1;PARÇAAL(A2;BUL(",";A2;1)+2;BUL(",";A2;BUL(",";A2;1)+1)-BUL(",";A2;1)-2))>0;"";PARÇAAL(A2;BUL(",";A2;1)+2;BUL(",";A2;BUL(",";A2;1)+1)-BUL(",";A2;1)-2)))
Boşluksuz listeleme için ya dizi formülü kullanılmalıdır ya da yardımcı sütun.
 
Katılım
21 Kasım 2012
Mesajlar
172
Excel Vers. ve Dili
2013 - TR & EN
Merhaba omer.baran,
--evet iki virgul arasi. zaten su listeye baktigimizda hepsi adres olacagindan hemen NY 'dan onceki yazan kelimeler arasinbda mukerrer kayit kontrolu yapmak amacim. zaten daha once de baska konuda cevapladigim formul ile PARCAAlma ile o istedigim kelimeyi iki virgul arasinda cekmek icin formulu paylastim fakat bu formulun her hucredeki adres icin verdigi sonuclar arasinda mukerrer kayit kontrolunu yapamadim...

--aslinda her yeni adres ziyaretinde A sutununda manual adres yaziliyor, silinmeksizin.

-- Liste suan 700 kusuruncu satirinda A sutununda. daha da adres eklenmeye devam ediyor fakat dedigim gibi a sutununda ornegin ben bugun A750'ye bir adres el ile yaziyorsam a750'den once bosluk olan bir hucre yok kesinlikle..
 
Katılım
21 Kasım 2012
Mesajlar
172
Excel Vers. ve Dili
2013 - TR & EN
Merhaba omer.baran,
--evet iki virgul arasi. zaten su listeye baktigimizda hepsi adres olacagindan hemen NY 'dan onceki yazan kelimeler arasinbda mukerrer kayit kontrolu yapmak amacim. zaten daha once de baska konuda cevapladigim formul ile PARCAAlma ile o istedigim kelimeyi iki virgul arasinda cekmek icin formulu paylastim fakat bu formulun her hucredeki adres icin verdigi sonuclar arasinda mukerrer kayit kontrolunu yapamadim...

--aslinda her yeni adres ziyaretinde A sutununda manual adres yaziliyor, silinmeksizin.

-- Liste suan 700 kusuruncu satirinda A sutununda. daha da adres eklenmeye devam ediyor fakat dedigim gibi a sutununda ornegin ben bugun A750'ye bir adres el ile yaziyorsam a750'den once bosluk olan bir hucre yok kesinlikle..

--Dipnot, sonuc islemini B sutunda ornek olarak gosterdigim uzare bunu tek hamlede B sutununda elde etmek amacim. cunku baska sutunlarda da baska olaylar gerceklestiginden cok fazla yaymadan yapmak AMACIM. baska soru varsa lutfen sorun
 
Katılım
21 Kasım 2012
Mesajlar
172
Excel Vers. ve Dili
2013 - TR & EN
Cok tesekkur edeirm omer.baran fakat paylastiginiz formul ile ilgili iki sorun ile karsilastim:
1- Bosluklu listeden kastinizin ne demek oldugunu daha iyi naladim denedikten sonra. Evet aralarda bosluk olmadan sonuc cikarmasini bekliyordum aslinda.

2-benim parca almak ile ilgili paylastigim formulde aslinda paylasmis oldugunuz formulun cikardigi sorunu dun halletmistim. o nedenle parca almak kismi icin formul paylastim. Soru nsu ki mesela bazi adresler A sutununda soyle >> X1 Avenue, Apartment B, Mechanicville, NY simdi ben verdiginiz formulu bu adresin yazili oldugu hucreyi isleme soktugumda bana Mechanicville vermicektir.
 
Katılım
23 Eylül 2013
Mesajlar
1,348
Excel Vers. ve Dili
Excel 2007 İngilizce -
Excel 2010 Türkçe -
Excel 2013 Türkçe -
Merhabalar,
Deneyiniz.
Kod:
=İNDİS(PARÇAAL(A$2:A$4;MBUL(",";A$2:A$4)+2;
   MBUL(",";(PARÇAAL(A$2:A$4;MBUL(",";A$2:A$4)+2;38)))-1);
      KÜÇÜK(EĞER(KAÇINCI(PARÇAAL(A$2:A$4;MBUL(",";A$2:A$4)+2;
        MBUL(",";(PARÇAAL(A$2:A$4;MBUL(",";A$2:A$4)+2;38)))-1);
      PARÇAAL(A$2:$A$4;MBUL(",";A$2:A$4)+2;
   MBUL(",";(PARÇAAL(A$2:A$4;MBUL(",";A$2:A$4)+2;38)))-1);)=
SATIR(A$2:A$4)-1;SATIR(A$2:A$4)-1);SATIR(A1)))
[COLOR="Blue"]Formül dizi formülüdür.CTRL+SHIFT+ENTER ile tamamlayınız.[/COLOR]
Not: Bu kadar kasmaya gerek yok. Yardımcı sütun yada bir kod daha iyi olurdu :)
İlginç sorunuz için teşekkür ederim. (ilginçlik bana göredir.)
 
Katılım
21 Kasım 2012
Mesajlar
172
Excel Vers. ve Dili
2013 - TR & EN
tamamdir formul super sekild calisiyor. :). FAKAT 2 sorun ile karsilastim.. bu sorunlari da halledebilirsek ayaga kalkip alkislayacagim.

1. SORUN: ayni bu formulu su adresi yazarak deneigimizde istedgim parcayi almiyor ? > Ornegin: Selami Caddesi, Osman Sokak, B Apartman, Osmaniye, TR .. . bu adresten bana TR'den hemen once iki virgul arasindaki kelime olan Osmaniye'yi vermiyor. Osman Sokak'i veriyor.
Yada baska bir ornek: Selami Caddesi, Osman Sokak, B Apartmani, Osman Bey, TR > mesela bu adreste de bana TR hemen once iki virgul arasindaki kelime olan "Osman Bey" i yazdirmasini istiyorum.. bunu nasil yapabiliriz?

2.SORUN:
Kendini tekrarlayan var ise bir kez yazsin , formul bunu yapiyor evet fakat eger adres listede SADECE BIR TANE var ise onu da yazsin.

Dipnot: Bunu tek hamlede halletmek isteme amacim aslinda bu ayni sayfada baska hesaplarin ve aksiyonlarin oldugu hucreler var bir bu kadar ilginc olan. yani o nedenle tek hamlede bir formul ile mumkunse harika olur.
 
Son düzenleme:
Katılım
23 Eylül 2013
Mesajlar
1,348
Excel Vers. ve Dili
Excel 2007 İngilizce -
Excel 2010 Türkçe -
Excel 2013 Türkçe -
Cevap verecek kişilere kalıplarınızı tam anlamıyla açıklamanız gerekmektedir. Sorunun ucu açık kalmış gibime geldi.

Bu yeni isteğinize göre formül baştan tasarlanması gerekecek belki iki katı olacak yada biraz kısalacak ama bu kadar kasmaya gerek yok. Bir adet yardımcı sütun ile daha pratik olacağını düşünüyorum.
Yardımcı sütun kullanmaktan bu kadar korkmayın. " Ben arabalarımın hepsinin Ferrari olmasını isterim fakat :) "

Saygılar,
 
Katılım
21 Kasım 2012
Mesajlar
172
Excel Vers. ve Dili
2013 - TR & EN
Kalip aslinda hep ama hep ayni. Tum adresler ", NY" ile bitiyor ve ben ", NY" ifadesinden hemen once iki virgul arasindaki ifadeyi almak istiyorum ve bu tum ifadeler icinde mukerrer kayit kontrolu yapmak istiyoru. Tamam peki yardimci sutun kullanmak istersek mesela B sutununda, A sutununda yer alan "xx Scott Avenue, Castleton On Hudson, NY" gibi bir adresin icinden ", NY" den hemen once gelen iki vir gul arasoindaki kelimeyi parca al ile "Castleton On Hudson" yazdirip , B sutunundaki sonuclar icinden mukerrer kayitlari ve bir kez yazilanlari , C sutununa 1 kez yazdirmak . bu mumkun mudur ?
 
Katılım
21 Kasım 2012
Mesajlar
172
Excel Vers. ve Dili
2013 - TR & EN
saban20152015 cok tesekkur ederim vakit ayirip ugrastigin icin, fakat simdi ben aslinda sadece formul ile bunu cozume kavusturmak istiyorum. dosya soyledigin sekilde calisiyor ve her defasinda "Tiklat" a tiklamam gerekiyor yenilemek icin listeyi. Henuz aradigim cozumu bulamadim formul ile ve gercekten yardim bekliyorum , her yolu denedim cikamadim icinden..
 
Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.
Worksheet_Change şeklinde arama yapınız, belli hücre/sütun/satır verisinde değişiklik olduğunda kodların otomatik olarak çalışmasını sağlayabilirsiniz.
 
Katılım
21 Kasım 2012
Mesajlar
172
Excel Vers. ve Dili
2013 - TR & EN
Merhaba, asil aradigim dedigim gibi formul oldugundan dolayi onun uzerinden pek durmadim sadece bahsetmek istedim fakat formul olursa en ufak bir degisiklik yapmam gerektignde ayni konu yazip tekrar tekrar ayni kod hk. soru sormak zorunda kalmamis olacagim. Cunku hic kod bilgim yok.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.
Bence WorksheetFunction şeklinde kod içeren makrolardan başlayabilirsiniz.
Böylece kod aşinalığı oluşacaktır.
(Şahsen ben de bu aşamada olduğumu söyleyebilirim.)
 
Katılım
21 Kasım 2012
Mesajlar
172
Excel Vers. ve Dili
2013 - TR & EN
Uzunca bir arastirdiktan sonra internetin dedim 90% 'in ingilizcedir cikar belki bir sey. yok arkadas yok. Galiba ilk defa bu sitede ben sordum boyle bir sey. Daha once adreslerle ilgili sorular var evet ama xxx,xxxx, NY tarzi bir adres icin calisiyor sadece. Fakat bu eger xxxx,xxxxxx,xxxx,xxxxx, xx tarzi bir sey olursa ve ben en son xx ifadesinden once iki virgul arasini almak istersem olmuyor ama biri bu sitede soyle demisti: excel de her sey mumkundur :). dedim acaba formul icin mi kastetti bunu acaba ama neyse kastirdi bana biraz ama sonunda tum sorunumun cozumunu buldum adim adim paylasayim ayni veya benzeri sorunla karsilasan var ise sayet caresine derman olsun: sitede paylasilan bircok dosyayi inceledim fakat rastlayamadim.. Ali Beyin kucuk bir formulunden faydalandim basindan beri...

A2den A2000'e kadar yazili xxxx,xxxx,xxxx,xxxx, xx formatinda kelime ve harf sayisi onemli olmaksizin, sadece arada ", " ifadesi kullanilarak adresler olsun.

B2 Hucresine (A2 Hucresini Isleme Sokuyoruz)
1. Formul: (Adreste son kelimeden onceki iki virgul arasindaki ifadeyi ceker ki bu ifade city oluyor benim ornegimde)
Kod:
=SOLDAN(KIRP(SAĞDAN(A2,UZUNLUK(A2)-BUL("+",YERİNEKOY(A2,",","+",UZUNLUK(A2)-UZUNLUK(YERİNEKOY(A2,",",""))-1)))),BUL("+",YERİNEKOY(SAĞDAN(A2,UZUNLUK(A2)-BUL("+",YERİNEKOY(A2,",","+",UZUNLUK(A2)-UZUNLUK(YERİNEKOY(A2,",",""))-1)))," ","+",UZUNLUK(SAĞDAN(A2,UZUNLUK(A2)-BUL("+",YERİNEKOY(A2,",","+",UZUNLUK(A2)-UZUNLUK(YERİNEKOY(A2,",",""))-1))))-UZUNLUK(YERİNEKOY(SAĞDAN(A2,UZUNLUK(A2)-BUL("+",YERİNEKOY(A2,",","+",UZUNLUK(A2)-UZUNLUK(YERİNEKOY(A2,",",""))-1)))," ",""))))-3)
C2 Hucresine(B2 Hucresini Isleme Sokuyoruz):
2. Formul: (Yukaridaki parca olarak alinmis city'ler icinde mukerrer kayit kontrolu yapar ve bosluk varsa da es gecer, hata verirse bosluk koyar ki zaten bu 1.formulden sonrasi her yerde bulunabilir)
Kod:
=EĞERHATA(İNDİS($B$2:$B$2000,KAÇINCI(0,EĞER(EBOŞSA($B$2:$B$2000),1,EĞERSAY($C$1:C1, $B$2:$B$2000)), 0)),"")
ILK IKI FORMULU ben birarada yapmak istemistim basindan beri. 3. Formul ilk 2 formulun birlestirilmis hali (Direkt A2 hucresini isleme sokuyoruz).
3. Formul (1. Formul icinde A2 yazan hucreleri $A$2:$A$2000 olarak degisitirip, ddegistirdikten sonra 2. formulde $B$2:$B$2000 yazan yerleri silip yerine 1. formulu yazdigimizda asagidaki formulu yazmis olursunuz ve bu formul 2. formulun yaptigi islemin aynisini yapar. Tek farki, 2. formul 1. formulun sonucunu isleme sokar. asagidaki formul ise direkt A2de yazan adresi isleme sokar yardimci sutuna ihtiyac duymadan, Yani direkt adresten parca alip alinan parcalar arasinda mukerrer kayit kontrolu yapip hatta daha da haddimi asip alfabetik siralama yaptim. vatana millete hayirli olsun simdi biraz kafami dagitip keyfime bakabilirim. kolay gelsin herkese:
Kod:
=EĞERHATA(İNDİS(SOLDAN(KIRP(SAĞDAN($A$2:$A$2000,UZUNLUK($A$2:$A$2000)-BUL("+",YERİNEKOY($A$2:$A$2000,",","+",UZUNLUK($A$2:$A$2000)-UZUNLUK(YERİNEKOY($A$2:$A$2000,",",""))-1)))),BUL("+",YERİNEKOY(SAĞDAN($A$2:$A$2000,UZUNLUK($A$2:$A$2000)-BUL("+",YERİNEKOY($A$2:$A$2000,",","+",UZUNLUK($A$2:$A$2000)-UZUNLUK(YERİNEKOY($A$2:$A$2000,",",""))-1)))," ","+",UZUNLUK(SAĞDAN($A$2:$A$2000,UZUNLUK($A$2:$A$2000)-BUL("+",YERİNEKOY($A$2:$A$2000,",","+",UZUNLUK($A$2:$A$2000)-UZUNLUK(YERİNEKOY($A$2:$A$2000,",",""))-1))))-UZUNLUK(YERİNEKOY(SAĞDAN($A$2:$A$2000,UZUNLUK($A$2:$A$2000)-BUL("+",YERİNEKOY($A$2:$A$2000,",","+",UZUNLUK($A$2:$A$2000)-UZUNLUK(YERİNEKOY($A$2:$A$2000,",",""))-1)))," ",""))))-3),KAÇINCI(0,EĞER(EBOŞSA(SOLDAN(KIRP(SAĞDAN($A$2:$A$2000,UZUNLUK($A$2:$A$2000)-BUL("+",YERİNEKOY($A$2:$A$2000,",","+",UZUNLUK($A$2:$A$2000)-UZUNLUK(YERİNEKOY($A$2:$A$2000,",",""))-1)))),BUL("+",YERİNEKOY(SAĞDAN($A$2:$A$2000,UZUNLUK($A$2:$A$2000)-BUL("+",YERİNEKOY($A$2:$A$2000,",","+",UZUNLUK($A$2:$A$2000)-UZUNLUK(YERİNEKOY($A$2:$A$2000,",",""))-1)))," ","+",UZUNLUK(SAĞDAN($A$2:$A$2000,UZUNLUK($A$2:$A$2000)-BUL("+",YERİNEKOY($A$2:$A$2000,",","+",UZUNLUK($A$2:$A$2000)-UZUNLUK(YERİNEKOY($A$2:$A$2000,",",""))-1))))-UZUNLUK(YERİNEKOY(SAĞDAN($A$2:$A$2000,UZUNLUK($A$2:$A$2000)-BUL("+",YERİNEKOY($A$2:$A$2000,",","+",UZUNLUK($A$2:$A$2000)-UZUNLUK(YERİNEKOY($A$2:$A$2000,",",""))-1)))," ",""))))-3)),1,EĞERSAY($D$1:D1, SOLDAN(KIRP(SAĞDAN($A$2:$A$2000,UZUNLUK($A$2:$A$2000)-BUL("+",YERİNEKOY($A$2:$A$2000,",","+",UZUNLUK($A$2:$A$2000)-UZUNLUK(YERİNEKOY($A$2:$A$2000,",",""))-1)))),BUL("+",YERİNEKOY(SAĞDAN($A$2:$A$2000,UZUNLUK($A$2:$A$2000)-BUL("+",YERİNEKOY($A$2:$A$2000,",","+",UZUNLUK($A$2:$A$2000)-UZUNLUK(YERİNEKOY($A$2:$A$2000,",",""))-1)))," ","+",UZUNLUK(SAĞDAN($A$2:$A$2000,UZUNLUK($A$2:$A$2000)-BUL("+",YERİNEKOY($A$2:$A$2000,",","+",UZUNLUK($A$2:$A$2000)-UZUNLUK(YERİNEKOY($A$2:$A$2000,",",""))-1))))-UZUNLUK(YERİNEKOY(SAĞDAN($A$2:$A$2000,UZUNLUK($A$2:$A$2000)-BUL("+",YERİNEKOY($A$2:$A$2000,",","+",UZUNLUK($A$2:$A$2000)-UZUNLUK(YERİNEKOY($A$2:$A$2000,",",""))-1)))," ",""))))-3))), 0)),"")
EXTRA BILGI: Bir de tum bu mukerrer kayit kontrolunun yapildigi alinmis parca City isimlerini alfabetik sira ile siralamak isteyen olursa diye de:
C2 Hucresindeki onceden yazilmis olan 2. formulu asagidaki formulde $B$2:$B$2000 Yazan yerlere koyarsak veya B2 hucresinin verdigi sonucu referans aldirirsak tipki asagidaki yazdigim formatta (Dipnot: Bu formulun yazildigi hucre2. satirdan basliyor. 1. satira mutlaka referans noktasi olarak bosluk ifadesi konulmali):
Kod:
=EĞER(EĞERSAY($B$2:$B$2000,">"&E1),İNDİS($B$2:$B$2000,KAÇINCI(EĞERSAY($B$2:$B$2000,"<="&E1),EĞERSAY($B$2:$B$2000,"<"&$B$2:$B$2000),0)),"")
VEYA
(Dipnot: Bu formulun yazildigi hucre 2. satirdan basliyor. 1. satira mutlaka referans noktasi olarak bosluk ifadesi konulmasi GEREKLI DEGIL):
Kod:
=EĞERHATA(İNDİS($B$2:$B$2000,KAÇINCI(0,EĞERSAY($B$2:$B$2000,"<"&$B$2:$B$2000)-TOPLA(EĞERSAY($B$2:$B$2000,E$1:E1)),0)),"")
 
Son düzenleme:
Katılım
23 Eylül 2013
Mesajlar
1,348
Excel Vers. ve Dili
Excel 2007 İngilizce -
Excel 2010 Türkçe -
Excel 2013 Türkçe -
Sn. Hayaletinizi,
Verdiğiniz formülleri Türkçe'ye çevirirken "," leri ";" olarak değiştirmeyi unutmuşunuz.
Bilginize.


Yardımcı sütun kullanarak alternatif olark kullanılabilir.
  • Verileriniz A2:A6 aralığında olsun,
  • İlk formül B2 hücresine,
  • İkinci formül C2 hücresine,
yazılması gerekmektedir.
1. Formül;
Kod:
=KIRP(EĞER(EHATALIYSA(MBUL(",";SOLDAN(A2;
  UZUNLUK(A2)-MBUL(",";A2;1));1)+1)=DOĞRU;;
    SAĞDAN(SOLDAN(A2;UZUNLUK(A2)-MBUL(",";A2;1)+1);
  MBUL(",";SOLDAN(A2;UZUNLUK(A2)-
MBUL(",";A2;1));1))))
2. Formül;
Kod:
=EĞERHATA(ARA(;-1/EYOKSA(KAÇINCI(B$2:B$6;$C$1:C1;));B$2:B$6);"")
Görsel;
 
Katılım
21 Kasım 2012
Mesajlar
172
Excel Vers. ve Dili
2013 - TR & EN
Merhaba bzace, cok tesekkur ederim tekrardan unutmayip geri donus yaptigin icin vakit ayirip. Kendim uzerinde baya dusunup 16. mesajda ilk 2 formul ile halledip hatta tek seferde islemi yapan formulu de yadim fakat dedigin gibi cok ama cok uzun ve cok kasti exceli zaten. simdi paylastigin formul alternatif olsun bana ve simdi birinci formulunu ben listemde denedigimde ornegin su adres icin > "00 Edna Ave., Mechanicville, NY"
verdigi sonuc soyle cikti : "a Ave., Mecha" cikiyor.?

Bu arada ben Turkce 2007 kullaniyorum fakat virgul kullaniyorum formullerde. fakat bilmiyorum bilgisayarim ingilizce oldugu icin mi acaba excelin dili turkce olsa da formullerde virgul kullaniyor bilemedim,.

Neyse paylastigin unique list bulan dizi formulunu kendi parca al formulumde denedigimde calsiiyor o, ve ilginc bir siralama yapiyor unique list verirken, o siralamayi neye gore yapiyor?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,254
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Bende kullanıcı tanımlı fonksiyon ile çözüm hazırladım. İnceleyiniz.

Hücrede kullanım şekli;
Kod:
=BENZERSIZ(Hücre_Aralığı;Kaçıncı_Benzersiz;Sıralama)
Sıralama kriteri opsiyoneldir. Bir şey yazmazsanız alfabetik sıralı listeler.

Örnek Dosya

Kod:
Option Explicit

Function BENZERSIZ(Alan As Range, Kacinci As Long, Optional Alfabetik As Boolean = True) As String
    Dim Dizi As Object, Veri As Range, Data As Variant
    Dim Liste As Variant, X As Long, Y As Long, Z As Variant
    
    Set Dizi = CreateObject("Scripting.Dictionary")
    Dizi.CompareMode = vbTextCompare
    
    For Each Veri In Alan
        If Veri.Text <> "" Then
            Data = Split(Veri.Text, ",")
            If UBound(Data) >= 2 Then
                If Not Dizi.Exists(CStr(Trim(Data(UBound(Data) - 1)))) Then
                    Dizi.Add CStr(Trim(Data(UBound(Data) - 1))), Nothing
                End If
            End If
        End If
    Next
    
    Liste = Dizi.Keys
    
    If Alfabetik = True Then
        For X = LBound(Liste) To UBound(Liste) - 1
            For Y = X + 1 To UBound(Liste)
                If StrComp(Liste(X), Liste(Y), vbTextCompare) = 1 Then
                    Z = Liste(Y)
                    Liste(Y) = Liste(X)
                    Liste(X) = Z
                End If
            Next
        Next
    End If
        
    If UBound(Liste) >= Kacinci - 1 Then BENZERSIZ = Liste(Kacinci - 1)
End Function
 

Ekli dosyalar

Üst