• DİKKAT

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

Veri aktarırken soldan metin kırpma

  • Konbuyu başlatan Konbuyu başlatan Mertsan
  • Başlangıç tarihi Başlangıç tarihi
Katılım
12 Aralık 2015
Mesajlar
67
Excel Vers. ve Dili
Excel 2010 ingilizce
Merhaba Arkadaşlar,

aşağıdaki kod ile BANKA adlı sayfama kaynak adlı sayfadan 320 muhasebe kodu ile ile başlayan müşteri adlarını bulduruyorum
Bu kodun iki sağındaki hücrede müşteri adları var, bunu offset ile ayarladım. Ancak müşteri adlarının önünde kendi hesap numarası ve bir boşlukla
beraber 11 haneli ön değer silinmeli. Bunu LTrim gibi bir metodla BANKA sayfama aktarırken silebilir miyim. Trim metoduna baktığımda sadece
boşlukları silme ile ilgili örnekler var. Biraz da bunu aşağıdaki koda uygulamada sorunum var. Yardımcı olabilirseniz sevinirim.

Örnek bulunan değer;
0001001704 ARSAN ISIL İŞLEM SA

Banka sayfasındaki Cells(12,5) ile belirtilen hedefe aktarılması gereken değer;
ARSAN ISIL İŞLEM SA

olmalı.


Kod:
With sheets("kaynak").Range("D" & satır & ":" & "D" & satır + 65)
                    Set Rng = .Find(What:=BulunacakMetin1, _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False) 
End With

sheets("BANKA").Cells(12, 5) = Rng.Offset(0, 2)
 
Merhaba,

rakam ve boşluk uzunluğu 11 ise right(rng.offset(0,2), len(right(rng.offset(0,2))-11)
olarak aktarabilirsiniz.
 
. . .

Rakam sayısı değişken ancak boşluk kesin var ise;

Örnek kodlama;

Kod:
a = InStr(1, Range("A1"), " ")
b = Len(Range("A1"))
MsgBox Right(Range("A1"), b - a)

. . .
 
Merhaba,

rakam ve boşluk uzunluğu 11 ise right(rng.offset(0,2), len(right(rng.offset(0,2))-11)
olarak aktarabilirsiniz.

Necdet bey(ve Hüseyin bey) yanıtınız için teşekkür ederim. Şimdilik kodu belirttiğim koda uyarlayamadım. Eklemeyi şöyle yapmıştım.

Kod:
With sheets("kaynak").Range("D" & satır & ":" & "D" & satır + 65)
                    Set Rng = .Find(What:=BulunacakMetin1, _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False) 
End With

sheets("BANKA").Cells(12, 5) = right(rng.offset(0,2), len(right(rng.offset(0,2))-11)

Bu durumda o satırda "list seperator or )" mesajı veriyor, biryerlerden ayırmak mı gerekiyor, yoksa bu satırı virgülden ayırıp ayrı ayrı mı denemek gerekiyor. Sadece virgülden sonraki Len ile başlayan kısmı denediğimde "arguman not optional" mesajı veriyor.

Sizce nerede hata yapıyorum?
 
Son düzenleme:
. . .

Rakam sayısı değişken ancak boşluk kesin var ise;

Örnek kodlama;

Kod:
a = InStr(1, Range("A1"), " ")
b = Len(Range("A1"))
MsgBox Right(Range("A1"), b - a)

. . .

Hüseyin bey,
Rakam sayısı sabit ama sabit olsa da kod çalışacağından,
Vermiş olduğunuz kodu uyarladığımda sonuç aldım. Doğrusu çalışacağını ummamıştım. Kodu anlayamadığımdan elbette. Halen de nasıl işledi anlamış değilim ama sonuç verdi. ilginç!

Yine benzer şekilde uyarlama yaptım. Şöyle ki

Kod:
With sheets("kaynak").Range("D" & satır & ":" & "D" & satır + 65)
                    Set Rng = .Find(What:=BulunacakMetin1, _
                            After:=.Cells(.Cells.Count), _
                            LookIn:=xlValues, _
                            LookAt:=xlWhole, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlNext, _
                            MatchCase:=False) 
End With


a = InStr(1, Rng.Offset(0, 2), " ")
b = Len(Rng.Offset(0, 2))

sheets("BANKA").Cells.(12, 5) = Right(Rng.Offset(0, 2), b - a)
 
Geri
Üst