iki metin hücresi içerikleri arasında eşleştirme

ermanusta

Altın Üye
Katılım
18 Nisan 2008
Mesajlar
304
Excel Vers. ve Dili
excel 365
Office 365
Altın Üyelik Bitiş Tarihi
14-11-2024
Merhabalar,
iki metin hücresi içerikleri arasında eşleşme yaparak bir sonuç elde etmek istiyorum örnek dosya ekledim örnekler dosyada mevcut fakat burdan bir örnek yazmak gerekirse.
bir hücrede metin var "Fatura sayfasında ödenen faturaların durumunu" diğer hücrede "ödeme yapılmıştır" sonuç hücresinde ise iki hücrede de "ödeme" kelimesi geçtiği için aralarında eşleşmiş ve sonuç kısmına da "ödeme yapılmıştır" hücresindeki metin yazılmış olmalı.
 

Ekli dosyalar

ermanusta

Altın Üye
Katılım
18 Nisan 2008
Mesajlar
304
Excel Vers. ve Dili
excel 365
Office 365
Altın Üyelik Bitiş Tarihi
14-11-2024
kısaca mantığından bahsedeyim.
D stünu mevcut olan veriler var ve bu verilerin hangi kategoride olduğunu bulmak istiyorum kategorileride C stünunda belirttim. (C stünu toplamda 70 satır, D stünu 2000 satırdan fazla). Zor olan kısım ise şu; D'deki hücre içindeki her kelimeyi (gerekirse kökleri, örn: "elmalar"="elma") C de arattım eşleşen hücreleri de E,F,G... gibi yan yana dizdim. bu örneğe göre eşleşen C ve D hücrelerindeki veriler şu şekilde olabilir
C: Elma D: Elmalar bugün toplamdı E:Elma
Mesela C de bir başka satırda "topla" kelimesi olursa bu sefer
C: Elma D: Elmalar bugün toplamdı E:Elma F:topla
gibi..
umarım anlatabilmişimdir.
anlatamadığım noktaları tekrar sorun lütfen.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
C:Elma
D:Belma geldi

Bu durumda ne olacak?
 

ermanusta

Altın Üye
Katılım
18 Nisan 2008
Mesajlar
304
Excel Vers. ve Dili
excel 365
Office 365
Altın Üyelik Bitiş Tarihi
14-11-2024
belma konusu için
hocam, kelime öbekleri türetilmiş veya türetilmemiş oluyor türkçede,
yani hiçbir kelimenin önüne ek gelmiyor herzaman kelime sonuna ekler alıyor. bu söylediğiniz sadece ingilizcede oluyor stop nonstop gibi
C:Elma
D:Belma geldi

Bu durumda ne olacak?
hocam bu arada mükerrer soru sormam gerekti, çünkü makro ile de yapılabilirken sadece formüller sayfasında paylaşmak istemedim. yada bu konuda bir yöntem varsa bilmediğimden iki konu açarak konu içerisinde neden iki konu açtığımı belirttim. bir yöntemi varmı bu durumun ?
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Excel bunu ayırt edemez.
Tabi ki ben de biliyorum neyin ek alıp almayacağınız.
Şu an kullandığımız (sürekli yeni yabancı kelimeler alan) Türkçe için aslında haklı sayılmazsınız.
Konu Excelle direkt ilişkili olmasa da sadece bilgilendirmek için yazıyorum. Sorunuza özgü olarak sorun sadece Ön Ek de değildir.

Tez - Antitez
Çok - Birçok
Ev - Huzurevi
Menkul - Gayrimenkul
Göz - Gözlem
Rasat - Rasathane
Rasyonel - irrasyonel

Sorunuz eğer C sütunundaki kelimelerin Türkçe dilbilgisine uygun olarak ek almış ya da almamışları olarak olsaydı fazla konuşmaya gerek kalmaz, Türkçe dilbilgisi kurallarının tamamını Excele kodların içine gömmek gerekecek, ya da ileri seviyede bir programlamaya ihtiyaç olacaktı.

Sorunuz basit olarak C sütununda belirtilen kelimelerin aranması ve sonuna gelecek (konumuz excel olduğu için ek diyemiyorum) ilave karakterlerin
dikkate aranmadan alınması olarak nitelenebilir ki zaten cevap veren arkadaşımız da size bu konuda çözüm buldu.

Ben de sadece size aranan kelimenin önünde herhangi bir karakter olup olmadığının sorgulanması gerekip gerekmediğini sordum.

Elbette karar sizin. Konu ve soru benim için kapanmıştır.
 

ermanusta

Altın Üye
Katılım
18 Nisan 2008
Mesajlar
304
Excel Vers. ve Dili
excel 365
Office 365
Altın Üyelik Bitiş Tarihi
14-11-2024
Merhaba

Talebiniz hakkında bir çalışma Ek 'tedir.

Selamlar...

Ekran Resmi
Ekli dosyayı görüntüle 239161
Evet aradığımla uyumlu fakat burda aranan kelimelerin de bölünmesi gerekiyor. 10.satırdaki "sersem yaylası" buna benzer bir örnek
buu örneğe göre sonuç ana metinde hem sersem hem yayla kelimelerinin ayrı ayrı aratılması gerekiyor. bu örnekte aranan kelimelerin tamamı aratılmış. ana metinde sersem kelimesi geçtiğinde sonuç kısmında sersem yaylası da yazmalı.
 

ermanusta

Altın Üye
Katılım
18 Nisan 2008
Mesajlar
304
Excel Vers. ve Dili
excel 365
Office 365
Altın Üyelik Bitiş Tarihi
14-11-2024
Excel bunu ayırt edemez.
Tabi ki ben de biliyorum neyin ek alıp almayacağınız.
Şu an kullandığımız (sürekli yeni yabancı kelimeler alan) Türkçe için aslında haklı sayılmazsınız.
Konu Excelle direkt ilişkili olmasa da sadece bilgilendirmek için yazıyorum. Sorunuza özgü olarak sorun sadece Ön Ek de değildir.

Tez - Antitez
Çok - Birçok
Ev - Huzurevi
Menkul - Gayrimenkul
Göz - Gözlem
Rasat - Rasathane
Rasyonel - irrasyonel

Sorunuz eğer C sütunundaki kelimelerin Türkçe dilbilgisine uygun olarak ek almış ya da almamışları olarak olsaydı fazla konuşmaya gerek kalmaz, Türkçe dilbilgisi kurallarının tamamını Excele kodların içine gömmek gerekecek, ya da ileri seviyede bir programlamaya ihtiyaç olacaktı.

Sorunuz basit olarak C sütununda belirtilen kelimelerin aranması ve sonuna gelecek (konumuz excel olduğu için ek diyemiyorum) ilave karakterlerin
dikkate aranmadan alınması olarak nitelenebilir ki zaten cevap veren arkadaşımız da size bu konuda çözüm buldu.

Ben de sadece size aranan kelimenin önünde herhangi bir karakter olup olmadığının sorgulanması gerekip gerekmediğini sordum.

Elbette karar sizin. Konu ve soru benim için kapanmıştır.
haklıymışsınız, ben asıl konuyu bildiğim için yorumum o şekilde oldu. asıl konuda şöyle bir durum var

kategorilerde:
elma, elmalar, elmalı
yumuşatıcı, yumuşatıcılı, yumuşatıcılar,
şeker, şekerleme, şekerli, şekersiz, az şekerli

ürünlerde
şekerlemeler, elmalı 10 gr.pk
bulaşık deterjanı elmalı 125 gr.pk
çamaşır deterjanı yumuşatıcılı
yumuşak şeker

gibi dizilmiş, yani bir kategori aslında mevcuttaki ürünlerin ne olduğu ile alakalı. dolayısıyla mevcuttaki ürünler içerisinde bir kelime kesinlikle kategori içerisinde geçiyor. böyle olunca ürünlerde elma (veya takı almış) kelimesi geçerken kategorilerde elmalı gibi sonuna takı almış (veya almamış) bir durum mevcut
 

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
Her kelimeyi ayrı ayrı ve olabilecek ekleriyle birlikte değerlendirmek çok zor, çözüm bulabilir misiniz bilmiyorum. Örneğin @ÖmerFaruk üstadın bahsettiği Elma-Belma yerine Elma-Elmas olarak düşünürseniz işin zorluğunu daha iyi anlarsınız.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Demek ki hem soruyu sormadan önce ve hem de cevaplara şıp diye yanıt vermeden önce biraz düşünmek lazım.
Dediğim gibi.
"Elbette karar sizin. Konu ve soru benim için kapanmıştır."
 

ermanusta

Altın Üye
Katılım
18 Nisan 2008
Mesajlar
304
Excel Vers. ve Dili
excel 365
Office 365
Altın Üyelik Bitiş Tarihi
14-11-2024
Her kelimeyi ayrı ayrı ve olabilecek ekleriyle birlikte değerlendirmek çok zor, çözüm bulabilir misiniz bilmiyorum. Örneğin @ÖmerFaruk üstadın bahsettiği Elma-Belma yerine Elma-Elmas olarak düşünürseniz işin zorluğunu daha iyi anlarsınız.
aklımdaki çözümü şu şekilde düşündüm.
ürün adları kelimelere bölünür, kategori adları kelimelere bölünür çıkan sonuçlarda eşleşen kelime var ise sonuca kategori yazılır

kulomer46' isimli arkadaşın paylaştığı makroda kelimeler eşleştiriliyor
aranan kelime "Sersem Yaylası" ana metinde tamamı geçtiğinde eşleşiyor. benim aradığım çözüm ise, hem sersem hem yayla kelimelerinin ayrı değerlendirilmesi.
ki burada da bir sorun var yayla ile yaylası kelimelerinin de eşleşmesi gerekiyor. bunun için çözümüde soldan parça al (bu parça alma işlemi için ayrı bir hücrede kaç parça alacağımı belirtebilirim) formülü ile yapılabilir. yani yayla ile yaylası kelimelerini eşleştirmek için ilk 5 harf eşleşirse sonuç olumlu olabilir.
 

ermanusta

Altın Üye
Katılım
18 Nisan 2008
Mesajlar
304
Excel Vers. ve Dili
excel 365
Office 365
Altın Üyelik Bitiş Tarihi
14-11-2024
Demek ki hem soruyu sormadan önce ve hem de cevaplara şıp diye yanıt vermeden önce biraz düşünmek lazım.
Dediğim gibi.
"Elbette karar sizin. Konu ve soru benim için kapanmıştır."
Hocam siz fevri davrandınız, ben sizi kırmamak için alttan aldım farketmediniz fevriliğinize devam ettiniz. düşünmeden şıp diye cevap verdiğiniz konuyu açıklıyayım da anlayın.

size yazdığım bu cümlede.
kelime öbekleri türetilmiş veya türetilmemiş oluyor türkçede,
"Kelime öbekleri"nden bahsettim. aradığımında " hücre içindeki her kelimeyi (gerekirse kökleri, örn: "elmalar"="elma")" kelimeleri türetilmiş veya kökleri birbirleriyle kıyaslamaktan bahsettim. bana elma belma diyorsunuz, belma elmanın türetilmiş halimi ?
siz bana farklı kelimelerin köklerini veya türetilmişlerini ayrı ayrı eşitlemekten bahsediyorsunuz.
burada soru sorarak cevap bulmaya çalışan birisiyim, egomu veya egonuzu tatmin etmek için gelmedim.
olduki yanlış anlattım derdimi yinede bu şekilde tavır takınmanız kim olursanız olsun cevap arayan birisine karşı yanlış bir davranış. üslubunuza dikkat edin benimle konuşurken.
 

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 makroyu kullanırsanız kelime kelime karşılaştırılır ama ek/kök hali dikkate alınmaz. Yani kelimenin birebir aynısı var mı diye kontrol edilir.

Ek/kök haline göre kontrol etmek için çözüm bulunabilir mi bilmiyorum maalesef, beni çok aşıyor :(

PHP:
Sub farklar()
Set regexp = CreateObject("VBscript.RegExp")
regexp.Global = True
regexp.Pattern = "[^ A-Za-zĞÜŞİÖÇığüşöç]"

son = Cells(Rows.Count, "C").End(3).Row
Range("E1:AZ" & son).ClearContents
For i = 4 To son
    bakD = Split(CStr(regexp.Replace(Cells(i, "D").Value, "")), " ")
    For k = 4 To son
        bakC = Split(CStr(regexp.Replace(Cells(k, "C").Value, "")), " ")
        For j = 0 To UBound(bakD)
            If IsInArray(bakD(j), bakC) = True Then
                sut = WorksheetFunction.Max(5, Cells(i, Columns.Count).End(xlToLeft).Column + 1)
                Cells(i, sut) = Cells(k, "C")
            End If
        Next
    Next
Next
End Sub
Private Function IsInArray(valToBeFound As Variant, arr As Variant) As Boolean
'DEVELOPER: Ryan Wells (wellsr.com)
'DESCRIPTION: Function to check if a value is in an array of values
'INPUT: Pass the function a value to search for and an array of values of any data type.
'OUTPUT: True if is in array, false otherwise
Dim element As Variant
On Error GoTo IsInArrayError: 'array is empty
    For Each element In arr
        If element = valToBeFound Then
            IsInArray = True
            Exit Function
        End If
    Next element
Exit Function
IsInArrayError:
On Error GoTo 0
IsInArray = False
End Function
 

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 makroyla ise yine kelime kelime karşılaştırılır, bu sefer eklere de bakılır ama sadece C sütunundaki ekler dikkate alınır. Örneğin D sütununda sayfa yazıyorsa ve C sütununda sayfalar yazıyorsa dikkate alınır ama örneğinizdeki gibi birinde sayfalar diğerinde sayfada yazıyorsa maalesef işe yaramıyor:

PHP:
Sub fark()
Set regexp = CreateObject("VBscript.RegExp")
regexp.Global = True
regexp.Pattern = "[^ A-Za-zĞÜŞİÖÇığüşöç]"

sonC = Cells(Rows.Count, "C").End(3).Row
sonD = Cells(Rows.Count, "D").End(3).Row
Range("E1:AZ65000").ClearContents
For i = 4 To sonD
    bakD = Split(CStr(regexp.Replace(Cells(i, "D").Value, "")), " ")
    For j = 0 To UBound(bakD)
        For k = 4 To sonC
            If Len(Cells(k, "C")) <> Len(Replace(Cells(k, "C"), bakD(j), "")) Then
                sut = WorksheetFunction.Max(5, Cells(i, Columns.Count).End(xlToLeft).Column + 1)
                Cells(i, sut) = Cells(k, "C")
            End If
        Next
    Next
Next
End Sub
 

ermanusta

Altın Üye
Katılım
18 Nisan 2008
Mesajlar
304
Excel Vers. ve Dili
excel 365
Office 365
Altın Üyelik Bitiş Tarihi
14-11-2024
kelime karşılaştırma makrosu aradığım makro bunu kullanabilirim teşekkür ederim,
peki bu makronun devamına karşılaştırılan her kelimenin başından parça al işlemi gibi bir işlemle karşılaştırılma yapılabilir mi ?
 

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
Benim verdiğim makrolardan bahsediyorsanız muhtemelen yapılabilir ama bu durumda ne kadar parça alınacağı konusu işimizi zorlaştırır. Örneğin "evlat" ve "evrak" kelimelerini nasıl eşleştireceğiz ya da eşleştirmeyeceğiz. Yani bu konu dipsiz bir kuyu. Samanlıkta iğne aramak daha kolay olabilir.
 

ermanusta

Altın Üye
Katılım
18 Nisan 2008
Mesajlar
304
Excel Vers. ve Dili
excel 365
Office 365
Altın Üyelik Bitiş Tarihi
14-11-2024
Benim verdiğim makrolardan bahsediyorsanız muhtemelen yapılabilir ama bu durumda ne kadar parça alınacağı konusu işimizi zorlaştırır. Örneğin "evlat" ve "evrak" kelimelerini nasıl eşleştireceğiz ya da eşleştirmeyeceğiz. Yani bu konu dipsiz bir kuyu. Samanlıkta iğne aramak daha kolay olabilir.
bunu bir hücredeki rakama bağlayabilirmiyiz. yani makro bir hücredeki rakam kadar parça alarak eşleştirme yapabilirmi. rakam manuel olarak girilebilir. eşlene kadar manuel olarak bu değeri değiştirebilirim
 

Korhan Ayhan

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

Bazen web ortamında kelimeler çok yanlış anlaşılabiliyor. Benimde başıma defalarca gelmiştir. Bizler burada sizlere cevap verirken inanın hiçbir art niyetle yorum yapmıyoruz. Elimizden geldiğince yönlendirici olmaya çalışıyoruz.

Mesela aşağıdaki konu başlığını okuduğum gün aklıma direkt "nasıl yani?" sorusu gelmiştir. Sanki birisi foruma soru sormuş ve sorusuna uzun süre cevap alamamışta bizlerin işini-gücünü sorguluyor gibi algıladım. Ama içeriği okuduğumda durumun farklı olduğunu gördüm.


Hepimiz her gün aynı mod da olamıyoruz maalesef. Bu sebeple karşılıklı anlayış göstermek bence durumu çözecektir.

Sorunuza gelirsek ben excelin yerleşik özelliği olan CTRL+F (BUL) özelliğini kullanarak çözüm üretmeyi tercih ettim. Bu çözüm yolu için ekteki dosyayı inceleyiniz. Kullandığım makro kelime bazlı arama yapmaktadır. %90 oranında işinizi çözeceğini düşünüyorum.
 

Ekli dosyalar

Üst