• DİKKAT

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

Kelimeler arasındaki alakasız karakterleri temizlemek

Katılım
1 Aralık 2010
Mesajlar
313
Excel Vers. ve Dili
Office 2010
Arkadaşar merhaba,

Elimde uzun bir liste var. Aşağıdaki ayrık otlarını! CTRL+H ile temizlemek çok uzun zaman alıyor. Hem de doğru yapalım derken hepten bozuyoruz.

Hiç başına gelen var mı? Bu işin olur yanı var mıdır?

Teşekkürler

*/*/*
* Çalışma yüzeyi ısınmadığı için operatörün eli ve vucudu <sıcaktan etkilenmez. * Kuvvetli vakumlama (emiş) özelliğine ?sahiptir. * Kol aparatı sayesinde 3giysilerin kolları rahat bir Hşekilde ütülenebilir. * Işık ile ütüleme alanı aydınlatılır. !! * Balanser 8sistemi ile ütü askıda !kaldığında zaman tasarufu sağlar.C* Sanayi tipi 380 V elektrik ile çalışır. * Sağlam konstrüksiyonlu 5ve kullanımı ergonomiktir. * CE normlarına9 uygundur. =* Çalışma ortamı ısınmaz,serin kalır.
 
Merhaba;

Metin, ençok aşağıdaki kadar temizlenebiliyor. (VBscriptin bazı özellikleri olmadığından. NET regex gerekli)

Ekli dosyayı inceleyin..

Çalışma yüzeyi ısınmadığı için operatörün eli ve vucudu sıcaktan etkilenmez. Kuvvetli vakumlama (emiş) özelliğine sahiptir. Kol aparatı sayesinde giysilerin kolları rahat bir Hşekilde ütülenebilir. Işık ile ütüleme alanı aydınlatılır. Balanser sistemi ile ütü askıda kaldığında zaman tasarufu sağlar. Sanayi tipi 380 V elektrik ile çalışır. Sağlam konstrüksiyonlu ve kullanımı ergonomiktir. CE normlarına9 uygundur. Çalışma ortamı ısınmaz,serin kalır.
Kod:
Function temizle(Hucre As Range) As String
    Set reg = CreateObject("vbscript.regexp")
    
    reg.Global = True
    reg.MultiLine = True
    reg.ignorecase = True
    reg.Pattern = "\<|\?|\*|\/|!|=|\d(?=[a-z])|\w[*?!=<>]|[*?!=]\w"
    
    temizle = reg.Replace(Hucre, "")
End Function
.
 

Ekli dosyalar

Burada yer alan dosyalardaki örnekleri inceleyin.
.

İdris Bey,
İlginiz ve yardımınız için çok teşekkür ederim. ASCI ve UNICODE karakterlerinin temizliği ile ve bunlar ile bir noktaya kadar gelebiliyorum. Ancak kelimenin başında ve sonunda alakasız rakamlar geliyor. Bunları ayıklamanın bir yöntemi var mıdır acaba?

(VBscriptin bazı özellikleri olmadığından. NET regex gerekli)

Zeki Bey,
Dediğinizi anlamadım. Biraz daha açık anlatabilir misiniz?
Microsoft SQL Server ile ilgilendiğinizi gördüm.
LOGO Programında Malzeme kartı girerken sol alt kısımda yer alan detaylı bilgiyi SQL sorgu ile alıyoruz.
Aşağıdaki sorgu sonucunda bu durum ortaya çıkıyor.
Sizin başka bir çözümünüz olabilir mi? Kendi setinizde deneyebilir misiniz?
Kod:
ISNULL(SUBSTRING(cast(cast(LDATA As varbinary(1500)) as varchar(1500)),2,1500),'') 'DETAYLI BİLGİ'
 
Kelimenin başındaki sayılar vbscript silebiliyor. Ancak sonunda bulunan için desen desteklemiyor. Demek istedğim buydu.

Ekli dosyayı incelediyseniz karakterlerin çoğu temizleniyor.

LOGO tablo yapısını görmeden bunu cevaplamak zor. Yapılan işlem LDATA alanını önce ikili veriye, sonra metne çevirip soldan iki karakterden itibaren 1500 karakter al demiş. Sonuç null ise ' ' ata demiş. Basit bir deneme yaptım çalışıyor.
 
Ekli dosyayı incelediyseniz karakterlerin çoğu temizleniyor.

Zeki Bey,
Ekli dosyayı indiremiyorum. hyildirim01@gmail.com adresine gönderir misiniz?
Ayrıca VBA kodlarını ise Pazartesi günü ilk iş deneyeceğim. Sizin ve İdris Bey'in önerilerini birleştirip %70 - %80 artık ne kadar olursa o kadar temizleyip gerisini el ile düzelteceğiz. İlginiz için çok teşekkür ederim.
Not: LOGO veritabanında malzeme detay bilgileri binary olarak LG_XXX_XX_PERDOC tablosunda tutulmaktadır. Ancak ortaya yukarıdaki gibi hilkat garibesi ecüş bücüş şeyler çıkıyor.
 
Alternatif,

'Temizleme kriterleri burada arttırılabilir. bölümünde farklı kriterler belirlenebilir. Daha fazla örnek olsaydı ona göre farklı kriterler belirlenebilirdi.

=temizlik(A1)

Sonuç,

Çalışma yüzeyi ısınmadığı için operatörün eli ve vucudu sıcaktan etkilenmez. Kuvvetli vakumlama (emiş) özelliğine sahiptir. Kol aparatı sayesinde giysilerin kolları rahat bir Hşekilde ütülenebilir. Işık ile ütüleme alanı aydınlatılır. Balanser sistemi ile ütü askıda kaldığında zaman tasarufu sağlar. Sanayi tipi 380 V elektrik ile çalışır. Sağlam konstrüksiyonlu ve kullanımı ergonomiktir. CE normlarına uygundur. Çalışma ortamı ısınmaz, serin kalır.
Kod:
Dim harfler As String
Dim sayilar As String
Dim ozelkarakter, cumlestr As String

Function temizlik(Hucre As Range) As String
  harfler = "()., abcçdefgğhıijklmnoöpqrsştuüvwxyzABCÇDEFGĞHIİJKLMNOÖPQRSŞTUÜVWXYZ"
  sayilar = "0123456789"
  ozelkarakter = ". "
  cumlestr = Hucre.Value
  cumlestr = Replace(cumlestr, ".", ". ")
  cumlestr = Replace(cumlestr, ",", ", ")
  cumlestr = Replace(cumlestr, "  ", " ")
  Call on_yikama
  Call temizleme
  temizlik = cumlestr
End Function

Sub on_yikama()
 
  cumle = ""
  For i = 1 To Len(cumlestr)
      harf = Mid(cumlestr, i, 1)
      sonrakiharf = Mid(cumlestr, i + 1, 1)
      If harf = "?" Then
      A = A
      End If
      say = 0
     
      If InStr(harfler, harf) > 0 _
         Or (oncekiharf = " " And InStr(sayilar, harf) > 0 And InStr(harfler, sonrakiharf) = 0) _
         Or (InStr(sayilar, oncekiharf) > 0 And InStr(sayilar, harf) > 0) _
      Then
         cumle = cumle + harf
      Else
       
      End If
      oncekiharf = harf
  Next i
  cumlestr = Replace(cumle, "  ", " ")
End Sub

Sub temizleme()
  cumle = ""
  oncekiharf = "*"
  For i = 1 To Len(cumlestr)
      harf = Mid(cumlestr, i, 1)
      sonrakiharf = Mid(cumlestr, i + 1, 1)
      If harf = "C" Then
      A = A
      End If
      say = 0
      'Temizleme kriterleri burada arttırılabilir.
      If oncekiharf = " " And InStr(harfler, harf) > 0 And sonrakiharf = " " And harf <> "V" Then
         
      Else
         cumle = cumle + harf
      End If
      oncekiharf = harf
  Next i
  cumlestr = Replace(cumle, "  ", " ")
End Sub
 
Son düzenleme:
SQL i biraz kısaltın... ISNULL(SUBSTRING(cast(LDATA as varchar(1500)), 2, 1500),'') [DETAYLI BİLGİ]

Zeki Bey,
SQL aşağıdaki hatayı verdi.
Msg 529, Level 16, State 2, Line 3
Explicit conversion from data type image to varchar is not allowed.

Sizin gönderdiğiniz kitap 2 dosyası %95 temizliyor. Müthiş bir yardımınız dokundu. Çok çok teşekkür ederim. Hakkınızı helal ediniz. İşleriniz rast gitsin.

Alternatif,
'Temizleme kriterleri burada arttırılabilir.

Merhaba,
İlginiz için çok teşekkür ederim. Hakkınızı helal ediniz. Emek vermişsiniz.
Demek istediğinizi idrak edemedim.
Yeni bir vba dosyası mı oluşturacağım?
Kriterleri nasıl arttırabilirim? Bir - İki örnek ekleyebilir misiniz?
Sağ olun
 
Merhaba,
İlginiz için çok teşekkür ederim. Hakkınızı helal ediniz. Emek vermişsiniz.
Demek istediğinizi idrak edemedim.
Yeni bir vba dosyası mı oluşturacağım?
Kriterleri nasıl arttırabilirim? Bir - İki örnek ekleyebilir misiniz?
Sağ olun

Kod u olduğu gibi kopyalayıp, dosyanızdaki modul1 e yapıştırın.

excel de herhangi bir hücreye =temizlik(A1) yazdığınızda işlem yapacaktır.

A1 sizin kaynak text in olduğu hücredir.
Kriter arttırma işi biraz kod bilgisi gerektirir.

Kod:
 If oncekiharf = " " And InStr(harfler, harf) > 0 And sonrakiharf = " " And harf <> "V" Then
buradaki kod gibi, önceki , sonraki ve şuanki harfin durumuna göre değişik kurallar yazılabilir.
 
Geri
Üst