find komutu

mnz

Katılım
5 Eylül 2005
Mesajlar
282
Excel Vers. ve Dili
Excel 2002 (Tr)
Arkadaşlar biliyorsunuz find komutu içerisinde birçok nesne(yada herneyse) var. Excel dersanesi bölümüne find komutunun ve içindekilerin ne işe yaradığını anlatırsanız iyi olmazmı?
Bul komutu ile ilgili çok soru soruluyor ve cevaplar birbirine pek benzemiyor. Find komutu kullanılmadan da bulma işlemi yapılabiliyor gördüğüm kadarıyla.
mümkünmüdür? :shock:
 
Katılım
8 Eylül 2005
Mesajlar
21
Naçizane Cevap,

Find Komutu Çok Faydalı Bir Komuttur.(Olmazsa, Olmaz Dedirtecek Cinsten)

Find Komutu ile istediğiniz özellikte arama yaptığınız gibi yanında gördüğünüz değiştir ile belge içinde aradığınız ne varsa onunla değiştiribilirsiniz.

Ã?rnek Hatalı Yazılmış AHHmet kelimelerini Ahmet olarak ve tüm belge içinde otomatik olarak düzeltmiş olursunuz.
 

mnz

Katılım
5 Eylül 2005
Mesajlar
282
Excel Vers. ve Dili
Excel 2002 (Tr)
fatihs arkadaşım cevabınız gerçekten nacizane olmuş. :wink:
Ben anlatamadım galiba.
Excel dersanesi bölümünde for next döngüsü nasıl anlatılmışsa Find komutunun nasıl kullanıldığının anlatılmasını rica etmiştim.
Foruma bul komutu ile ilgili bir soru soracaktım baktım ki 190 a yakın konu var. Verilen cevapları inceledim (bir kısmını) ama kodlar değişik. yani if else, for next gibi sabit kuralı yok. Belki vardır ben anlayamamış olabilirim. Mesela Find komutu içindeki what, After, Machcase, SearchFormat vs gibi terimler ne işe yarar?Aynı soruları tekrar tekrar sormak yerine komutun nasıl kullanıldığını öğrenmek kalıcı bilgiye sahip olmamızı sağlayacaktır.
Bu arada sorumu da burada soriyim bari :yazici:
sütun 1 deki altalta verileri sütun 2 deki altalta verilerde arayan ve sütun 2 de bulunan hücrenin yanına sütun 1 deki satır numarasını (yada ilk 6 harfini) yazacak bulunamayanlara ise herhangi bir işlem yapmayacak bir kod.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Merhaba

Bildiğim kadarı ile size find komutunu anlatmaya çalışayım. Eksiğim veya yanlışım varsa arkadaşlar düzelteceklerdir. Aşağıdaki gibi bir kod makro kaydet yöntemi ile elde edilmiş bir koddur. Yani bir bul işleminde yapılan tüm ayarların Excel tarafından oluşturulmuş bir karşılığıdır. Bu kod aynı şekilde kullanılabileceği gibi, kısaltarakta kullanılabilir. Kodun içindeki kısımların açıklaması alt kısımda yapmaya çalıştım.

[vb:1:5a51546d58] Columns("A:B").Select
Selection.Find(What:="a", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= False).Activate
[/vb:1:5a51546d58]

What:="a" :bulunacak değer burada "a" dır
After:=ActiveCell: Bu işlevin anlamını bende bilmiyorum.
LookIn:=xlValues:Sadece değerler içinde ara
LookAt:=xlWhole:tam eşdeğer hücreleri ara
SearchOrder:=xlByColumns:Sütunlarda ara
SearchDirection:=xlNext:Sonrakini bul
MatchCase:= False:Büyük-küçük harf duyarlı değil

Sorunuza gelince size find komutlu iki kod öneriyorum. Birincisi find komutu en kısa halidir.

[vb:1:5a51546d58]Sub bul()
For a = 1 To [a65536].End(xlUp).Row
say = WorksheetFunction.CountIf(Columns(2), Cells(a, 1))
If say = 1 Then
sat = [b1:b65536].Find(Cells(a, 1).Value).Row
Cells(sat, 3) = a 'İlk altı harf için a yerine Mid(Cells(a, 1), 1, 6) yazın.
End If
Next
End Sub[/vb:1:5a51546d58]

Bu kod ise makro kaydet ile elde edilen ve arama kriterlerini belirleyebileceğiniz bir koddur. Çok önemli olmayan bazı tanımlamaları sildim. Daha güvenilir bir koddur.

[vb:1:5a51546d58]Sub bul2()
For a = 1 To [a65536].End(xlUp).Row
say = WorksheetFunction.CountIf(Columns(2), Cells(a, 1))
If say = 1 Then
sat = [b1:b65536].Find(What:=Cells(a, 1).Value, LookIn:=xlValues, LookAt:=xlWhole).Row
Cells(sat, 3) = a 'a yerine veya Mid(Cells(a, 1), 1, 6)
End If
Next
End Sub
[/vb:1:5a51546d58]

Ama hepsinden en güvenlisi, çok fazla veri taranmasında yavaş çalışsa da bir döngü kurarak yapılan aramadır.
 

mnz

Katılım
5 Eylül 2005
Mesajlar
282
Excel Vers. ve Dili
Excel 2002 (Tr)
Allah(c.c.) razı olsun leventm
Makroyu yeni öğreniyorum. Satır satır anlamaya çalışıyorum.
ilk satırda a1 a65536 arasında döngü oluyor. (.End(xlup).row) nedir?
2 satırı hiç anlamadım say herseferinde 1 e eşit olmak zorundaki bulma işlemi yapılabilsin. worksheet ile başlayan satır nasıl 1 e eşit oluyor?
3 satır tamam gibi(say=1 i anlarsam) (if say=say than olsaydı nolurdu)
4 satırı da anladım. sonundaki .Row niye yukarıdaki gibi .Activete niye değil
5 satırda say 1 e eşit ise sonuç hep aynı hücreye yazılmazmı?

-----------------
Sub bul2()
1- For a = 1 To [a65536].End(xlUp).Row
2- say = WorksheetFunction.CountIf(Columns(2), Cells(a, 1))
3- If say = 1 Then
4- sat = [b1:b65536].Find(What:=Cells(a, 1).Value, LookIn:=xlValues, LookAt:=xlWhole).Row
5- Cells(sat, 3) = a 'a yerine veya Mid(Cells(a, 1), 1, 6)
End If
Next
End Sub
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,330
Excel Vers. ve Dili
Ofis 365 Türkçe
Sayın mnz, aynı dertten müzdaribiz yani :D
Bende bazı lafları anlıyorum bazılarını hiç anlamıyorum, ki anlamadığım daha çok. Keşke Makro örnekleri veren arkadaşlar (bazen olmayabilir, bunuda anlarım) her satıra bir açıklama ekleseler çok yararlı olur sanırım.
Bir örneğe bakıyorum hmmm bu böyle olurmuş diyorum, sonra benzer başka bir örnekte başka şekilde yazılmış oluyor. Ama yinede acele etmeden yavaş yavaş öğrenmek ve anlamaya çalışmak gerek.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Sn mnz ve Necdet_Yesertener

Yazılan her kodun yanına işlevini yazmak elbette faydalı bir uygulama olacaktır. Son dönemlerde ben bunu yapmaya çalışıyorum. Hatta bu isteklerden hareketle kısa bilgilerden oluşan bir not hazırlamakta artık şart oldu galiba. Vakit buldukça böyle bir not hazırlamaya çalışacağım. Fakat ben bu konularda biraz tembelimdir. Kağıdı kalemi elime almayı pek sevmem. Bunları yazıyorumki kendimi bağlarsam belki bu çalışmayı hızlandırırım. :D Þimdi diğer moderatör arkadaşlar bu yazıyı görünce, haklı olarak hani sende "koşullu biçimlendirme" ile ilgili bir makale yayınlayacaktın ne oldu diyeceklerdir. Bu durumda aklıma şöyle bir öneri geldi. Necdet bey siz "koşullu biçimlendirme" konusuna vakıfsınız. Böyle bir makaleyi sizden rica etsem, yüzsüzlükmü etmiş olurum. Buna karşılık bende ilk cümlelerimde bahsettiğim notları hazırlayayım. :D
 

mnz

Katılım
5 Eylül 2005
Mesajlar
282
Excel Vers. ve Dili
Excel 2002 (Tr)
Haklısınız.
Sitedeki arkadaşlar çok çabuk yardımcı oluyorlar. Hepsine teşekkür. Ama artık bizler de yardımcı olmaya başlayalım dimi?
Bizler hazır bilgiyi daha çok seviyoruz. Biliyorsunuz öğrenmek copy past yaparak olmaz. Kendi açımdan satırları anlamaya çalışma aşamasına geldiğimi düşünüyorum.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Sn mnz

Düşünceleriniz beni çok mutlu etti. Her üyemiz bir konuyla ilgili bir makale veya çalışma yayınlasa muazzam bir arşiv oluştururduk. Sizinde kendinize bu açıdan pay çıkartmanız memnuniyet verici. Sorduğunuz sorularla ilgili bilgiyi hazırlayacağım notlarda vereyim. Bu notları en kısa zamanda hazırlayacağım. Kod bilginizi ne kadar geliştirirseniz geliştirin, en önemlisi algoritma mantığını oluşturmaktır. Ã?ncelikle bir sorunu nasıl bir yöntemle çözmeniz gerektiğini şablon olarak tasarlamanız gerekir, ondan sonrada bu şablona uygun kodları tasarlamak inanın çok kolaydır.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,330
Excel Vers. ve Dili
Ofis 365 Türkçe
Sayın leventm, aşkolsun yani sadece koşullu biçimlendirme mi biliyorum :D Ama söz size koşullu biçimlendirmeyi yazılı dokuman olarak bu siteye koyacam. Yalnız ben ingilizcesini yazacam, çünkü elimde türkçe ofis yok, sizden de bunun Türkçesini istiyebilir miyim?
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
çünkü elimde türkçe ofis yok, sizden de bunun Türkçesini istiyebilir miyim?
Elbette her türlü yardıma hazırım. Ayrıca bu konudaki desteğiniz nedeniyle de çok teşekkür ederim.

yani sadece koşullu biçimlendirme mi biliyorum
Bu cümleyi diğer konularda da makaleler geliyor diye anlayabilirmiyim? :mrgreen:
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,330
Excel Vers. ve Dili
Ofis 365 Türkçe
Neden olmasın Sayın leventm, :D
Bildiklerimi anlatırım
 

ptcsite

Altın Üye
Katılım
8 Nisan 2016
Mesajlar
123
Excel Vers. ve Dili
M.OFFICE 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
26-12-2027
Merhaba

Bildiğim kadarı ile size find komutunu anlatmaya çalışayım. Eksiğim veya yanlışım varsa arkadaşlar düzelteceklerdir. Aşağıdaki gibi bir kod makro kaydet yöntemi ile elde edilmiş bir koddur. Yani bir bul işleminde yapılan tüm ayarların Excel tarafından oluşturulmuş bir karşılığıdır. Bu kod aynı şekilde kullanılabileceği gibi, kısaltarakta kullanılabilir. Kodun içindeki kısımların açıklaması alt kısımda yapmaya çalıştım.

[vb:1:5a51546d58] Columns("A:B").Select
Selection.Find(What:="a", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= False).Activate
[/vb:1:5a51546d58]

What:="a" :bulunacak değer burada "a" dır
After:=ActiveCell: Bu işlevin anlamını bende bilmiyorum.
LookIn:=xlValues:Sadece değerler içinde ara
LookAt:=xlWhole:tam eşdeğer hücreleri ara
SearchOrder:=xlByColumns:Sütunlarda ara
SearchDirection:=xlNext:Sonrakini bul
MatchCase:= False:Büyük-küçük harf duyarlı değil

Sorunuza gelince size find komutlu iki kod öneriyorum. Birincisi find komutu en kısa halidir.

[vb:1:5a51546d58]Sub bul()
For a = 1 To [a65536].End(xlUp).Row
say = WorksheetFunction.CountIf(Columns(2), Cells(a, 1))
If say = 1 Then
sat = [b1:b65536].Find(Cells(a, 1).Value).Row
Cells(sat, 3) = a 'İlk altı harf için a yerine Mid(Cells(a, 1), 1, 6) yazın.
End If
Next
End Sub[/vb:1:5a51546d58]

Bu kod ise makro kaydet ile elde edilen ve arama kriterlerini belirleyebileceğiniz bir koddur. Çok önemli olmayan bazı tanımlamaları sildim. Daha güvenilir bir koddur.

[vb:1:5a51546d58]Sub bul2()
For a = 1 To [a65536].End(xlUp).Row
say = WorksheetFunction.CountIf(Columns(2), Cells(a, 1))
If say = 1 Then
sat = [b1:b65536].Find(What:=Cells(a, 1).Value, LookIn:=xlValues, LookAt:=xlWhole).Row
Cells(sat, 3) = a 'a yerine veya Mid(Cells(a, 1), 1, 6)
End If
Next
End Sub
[/vb:1:5a51546d58]

Ama hepsinden en güvenlisi, çok fazla veri taranmasında yavaş çalışsa da bir döngü kurarak yapılan aramadır.
Harikasınız bende find komutunda bi hatam vardı aranan kelimenin belli bir kısmı ile aratınca yanlış hücreye gidiyordu. Örneğin Ben hücreye SOKE yazınca BSOKE satırına gidiyordu... Dediğinizi uyguladım kodda xlPart yazanı xlWhole yapınca sorun kalktı. Çok teşekkür ederim.
Peki ben bu değerleri sözlükte bulabilir miyim ve nasıl bulabilirim. Kolay bi yolu vardır galiba
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,936
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sözlükten kastınız nedir?
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Object Browser'i sözlük gibi düşünebilirsiniz. Resimdeki kırmızı çerçeve içindeki gibi arama yaparsanız tüm parametrelere ulaşabilirsiniz.

248073
 
Üst