AccessTr.neT
Excel Hücre İçinde Geçen Karakter Sayısını Kısıtlamak. - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Microsoft Excel (https://accesstr.net/forum-microsoft-excel.html)
+--- Forum: Excel Cevaplanmış Soruları (https://accesstr.net/forum-excel-cevaplanmis-sorulari.html)
+--- Konu Başlığı: Excel Hücre İçinde Geçen Karakter Sayısını Kısıtlamak. (/konu-excel-hucre-icinde-gecen-karakter-sayisini-kisitlamak.html)

Sayfalar: 1 2 3


RE: Excel Hücre İçinde Geçen Karakter Sayısını Kısıtlamak. - Oğuz Türkyılmaz - 06/02/2021

Dediğiniz gibi durumlar oluşuyor zaten ama artık o durumda ilk kelimenin en çok kullanılan türkçe karşılık olduğu düşünülecek başka yolu yok sanırm yada böyle durumlarda virgülü değil son boşluk karakteri baz alınmalı sanırım. Sadece şunu kafamda çözemedim diyelim ki Türkçe karşılık olarak 3- 4 kelime var ve bunlar virgüllerle birbirinden ayrılmış ama karakterlerin toplamı da 50 den az Böyle bir durumda da işlem yapmaması gerekiyor. Bu nasıl sağlanabilir bilemiyorum.


Re: Excel Hücre İçinde Geçen Karakter Sayısını Kısıtlamak. - berduş - 07/02/2021

öncelikle çalışmanıza deneme amaçlı olarak yeni bir sayfa ekleyin ADI: Lugat_2  olsun
sonra çalışmanıza yeni bir modül ekleyip oraya aşağıdaki kodu ekleyin
VBA sayfasında fonksiyonun ilk satırına tıkladıktan sonra F5 tuşuna basın
dilerim işinize yarar
Not: bu işlemin tek seferlik olacağı varsayıldığından dosyada uzantı değişikliğine gidilmedi
bu haliyle XLSX uzantılı olarak dosyanızı kaydetmeye çalışırsanız fonksiyon kaydedilmez
Sub Kisalt()
Dim DiziLugat() As Variant
Dim DiziLugat2() As Variant
Dim SyfKynk As Worksheet
Dim SyfHdf As Worksheet
Dim SonStr As Long
On Error Resume Next

Set SyfKynk = ThisWorkbook.Worksheets("lugat")
Set SyfHdf = ThisWorkbook.Worksheets("Lugat_2")
SonStr = SyfKynk.Cells(Rows.Count, 1).End(xlUp).Row

DiziLugat = SyfKynk.Range("A1:B" & SonStr)

ReDim DiziLugat2(LBound(DiziLugat) To UBound(DiziLugat), 1 To 2)
For x = LBound(DiziLugat) To UBound(DiziLugat)
    VrgulKes = InStrRev(Left(DiziLugat(x, 2), 50), ",") - 1
    VrgulKes = IIf(VrgulKes < 1, 50, VrgulKes)
    DiziLugat2(x, 1) = DiziLugat(x, 1)
    DiziLugat2(x, 2) = Left(DiziLugat(x, 2), VrgulKes)
 
Next x

SyfHdf.Range("A1").Resize(UBound(DiziLugat2, 1), UBound(DiziLugat2, 2)) = DiziLugat2
MsgBox "bitti"
End Sub
[Resim: do.php?img=10695]https://resim.accesstr.net/do.php?img=10695


RE: Excel Hücre İçinde Geçen Karakter Sayısını Kısıtlamak. - Oğuz Türkyılmaz - 07/02/2021

Sn.Berduş Resimdeki hatayı veriyor.
[Resim: do.php?img=10696]


RE: Excel Hücre İçinde Geçen Karakter Sayısını Kısıtlamak. - berduş - 07/02/2021

çalışmanızda option Explicit kullandığınız için her değişkeni tanımlamanız gerekiyor
burada x tanımlanmadığından hata veriyor ya option Explicit satırını silmelisiniz yada
Dim satırlarının altına Dim x as long benzeri yeni bir satır eklemelisiniz

aynı şey vrgulkes içinde geçerli

Dim x as long
dim VrgulKes as byte

ama bence kod tek seferlik çalışacağından en baştaki option Explicit satırına gerek yok


RE: Excel Hücre İçinde Geçen Karakter Sayısını Kısıtlamak. - Oğuz Türkyılmaz - 07/02/2021

(07/02/2021, 14:09)berduş yazdı: çalışmanızda option Explicit kullandığınız için her değişkeni tanımlamanız gerekiyor
burada x tanımlanmadığından hata veriyor ya  option Explicit satırını silmelisiniz yada
Dim satırlarının altına Dim x as long benzeri yeni bir satır eklemelisiniz

aynı şey vrgulkes içinde geçerli

Dim x as long
dim VrgulKes as byte

ama bence kod tek seferlik çalışacağından en baştaki option Explicit satırına gerek yok

Sn.Berduş Office sürümümle ilgili olduğunu düşündüğüm bir hata var Sql SERVER Management Studıo ya Excel dosyamı import ederken hata aldığımdan Office sürümümü komple kaldırıp 2019 yükleyeceğim. Bu işlemden sonra söylediklerinizi uygulayacağım. Ben Dim x As Short olarak bir değişken tanımlayıp denemiştim ama orda da başka bir hata vermişti. En kısa zamanda deneyip geri dönüş yapacağım. Çok teşekkürler.


RE: Excel Hücre İçinde Geçen Karakter Sayısını Kısıtlamak. - Oğuz Türkyılmaz - 07/02/2021

Sn.Berduş çok teşekkür ederim. Halloldu.