• DİKKAT

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

String icinden belirli bölümün cikartilmasi

  • Konbuyu başlatan Konbuyu başlatan zuzzu
  • Başlangıç tarihi Başlangıç tarihi
Katılım
28 Şubat 2011
Mesajlar
57
Excel Vers. ve Dili
Excel 2007
Arkadaslar merhaba,

Legend 1 --> "T4 K123456-01 ........ TH=10 (a)"
Legend 2 --> "T4 K123456-02 ........ TH=15 (b)"
Legend 3 --> "T4 PY1232 TH=20 (c)"

Yukarida yazdiklarim makro ile cizdirdigim grafigin Legend'lari.

Yukarida görüldügü gibi 2 tip legend adi var. Biri daha uzun (1. ve2.) digeri daha kisa(3.).

Ben Legendda "TH=10", "TH=15" ve "TH=20" kisimlarinin gözükmesini istemiyorum. (10,15,20 sayilari degisken, 1den 60a kdr gidiyor. Önemli kisim T ile baslayan noktadan T, H, =, ve hemen sonraki 2 sayinin gözükmemesi)

Isin icinden cikamiyorum.

Su sekilde gözükmesini istiyorum:

Legend 1 --> "T4 K123456-01 ........ (a)"
Legend 2 --> "T4 K123456-02 ........ (b)"
Legend 3 --> "T4 PY1232 (c)"

Yardimlariniz icin cok tesekkür ederim!! :)

Iyi calismalar.
 
örnek bir dosya yardımcı olur.
 
Dosya ektedir.

Aciklamalari kodlarin arasina yazdim :-)

Tesekkür ederim.
 

Ekli dosyalar

Kod:
word = Left(word, WorksheetFunction.Find("TH=", word) - 1) & Right(word, 3)

şeklinde bir deneyin.
 
Cok tesekkür ederim!
Sonunda oldu!
Saatlerdir bunun icin calisiyordum!

Right(word, 3) kismininda 5 yaziyorum, gereksiz detaylar kaliyor. 6 yapiyorum, parantezlerden 1 tanesi siliniyor.

Ama artik oldugu kadar valla. :-)

Cok cok tesekkür ederim.
 
rica ederim.

Kod:
Left(word, WorksheetFunction.Find("TH=", word) - 1)
kısmı word değişkenine atanan değerin soldan başlayarak "TH="a kadar olan kısımını alır.

Kod:
Right(word, 3)
kısmı ise en sağdaki 3 karakteri.
örneklerde "(a)" vs yer aldığı için 3 karakter olarak dikkate aldım. eğer farklı bir yapı varsa ona göre değiştirmek gerekir.

örneğin değere soldan bakarak bulduğu ilk parantezden sonrasını almak istiyorsak
bu bölümün yerine aşağıdaki kodu koymak daha uygun olabilir.
Kod:
Mid(word, WorksheetFunction.Find("(", word), Len(word))
veya
Kod:
Right(word, Len(word) - WorksheetFunction.Find("(", word) + 1)
 
Son düzenleme:
Formatta tek yapmam gereken degisiklik; örnegin "TH=33" ya da "TH=1" gibi kisimlarin gözükmemesi.

Stringler ne sagdan bakinca ne de soldan bakinca ayni degil.

kiminin sonunda (ab/a) yaziyor, kiminin sonunda (a). Sagdan sayildiginda birinde 6, birinde 3.
ayni zamanda soldan bakarsak da, birinde TH=... degerine gelene kdr basinda 10 karakter var, digerinde 5 karakter var.

O acidan uygun bir sekilde, bütün stringlere uygulayabilecegim islemi bulamadim.
 
6 no.lu mesaja eklediğim şekilde kullanabilirsiniz.

yani
Kod:
word = Left(word, WorksheetFunction.Find("TH=", word) - 1) & Mid(word, WorksheetFunction.Find("(", word), Len(word))
 
Yani aslinda;

Bir stringin icinde TH=33 ya da TH=4 buluyorsan, Tden basla ve 5 karakter saga say. O 5 karakteri sil. "TH=33" nin saginda ve solunda kalan diger karakterler kalsin.

"T4 K123456-01 blabla TH=10 (a)" yerine "T4 K123456-01 blabla (a)"
 
Cok sükür!!!

Inanamiyorum oldu! Saatlerdir ugrasiyordum. Sinirlerim gerildi artik! :-) Oh!

Allah ne muradiniz varsa versin. Cok tesekkür ederim! :-)
 
rica ederim.

sorularımızı ne kadar açık, ihtimalleri içeren şekilde kurgulayarak yazar isek daha kısa sürede ve daha doğru cevaplar alabiliriz.

siz dosyanıza hakim olduğunuz için ne istediğinizi biliyorsunuz... oysa cevaplamaya çalışan bu imkana sahip değil. doğru anlasa hemen cevap verebilecek durumda belki ama kısıtlı bilgi ile bu zor oluyor.

tabii aynı problem ile daha önce karşılaşılmış ise veya tecrübeli bir cevaplayan ise leb'den leblebi'yi anlaması da mümkün.
 
Doğru, çok haklısınız.

Ancak benim de tamamiyle kodları buraya yazmam mümkün olmuyor.

Yaklaşık bir kod öğrenirsem, kendime göre ayarlarım diye düşünmüştüm.

Sizi de yordum kusura bakmayın. Gercekten çok teşekkür ederim :-)
 
Eger checkbox1'in degeri dogru ise;

9. satirlara bak. 9. satirdaki A9, B9, C9,... hangisinin degerinin sondan 3. karakteri "°" ise,
su su su islemleri yap diyecegim ama bir türlü "hangi kolonun 9. satirinin degerinin sondan 3. karakteri "°" ise onu bul" kodunu yazamiyorum.

Acaba InStrRev i mi yanlis kullaniyorum?
Ya da direkt 9. satirda "°" karakterini de aratabilirim. Sadece tek kolonda var cünkü bu deger.
Yolu elimden geldigince uzatiyorum sanirim?
Bu emirin kodunu yazmaya calistim ancak InStrRev kisminda hata veriyor.
Yardimci olabilir misiniz?


If Me.CheckBox1 = True Then

Do
InStrRev(1, Plot_excel_sheet.Cells(9, Plot_excel_sheet_column), 3) = "°"
 
InStrRev fonksiyonu (VBA) bir metni başka bir metin içinde bu metnin sonundan başlayarak arar, bulduğu ilk yerin pozisyon numarasını soldan başlayarak (başlama yeri belirtilmişse, ondan itibaren) verir.

örnek:
InStrRev("katakulli", "k") nın sonucu 5'tir.

InStrRev("katakulli", "k", 4) nın sonucu 1'dir. (1, 2, 3, 4 aynı.) (baştaki harf te "k" olmasa idi hepsi 0)

InStrRev("katakulli", "k", 5) nın sonucu 5'tir. (-1, 5, 6, 7, 8, 9 aynı)

InStrRev("katakulli", "k", 10) nın sonucu 0'dır.

InStrRev("katakulli", "k", 0) hata verir.
 
Son düzenleme:
Kod:
If Len(Plot_excel_sheet.Cells(9, Plot_excel_sheet_column)) - InStrRev(Plot_excel_sheet.Cells(9, Plot_excel_sheet_column), "°") = 3

ne sonuç veriyor?
 
Sayin Mancubus,

Cok özür dilerim mesajini su an tesadüfen gördüm.

Kendimce bir cözüm buldum ama ne kadar verimlidir, tartisilir.

Ckeckbox1 secili ise 9. satirlarda "°C"'yi bul ve "K" yap. Ardindan islemleri gerceklestir demisim.
InStr/InStrRev pozisyon belirten bir fonksiyon. Sanirim sonunda anladim :-) bu fonksiyonu sürekli karistiriyorum.
Artik burayi acik örneklerinize bakacagim.
Cok tesekkür ederim :-)


If A_Plot_Graphic.CheckBox1 = True Then

'Plot_excel_sheet_row
row_counter = 39

Do
Plot_excel_sheet.Cells(9, Plot_excel_sheet_column).Replace What:="°C", Replacement:="K"

Plot_excel_sheet.Cells(row_counter, Plot_excel_sheet_column).Value = Plot_excel_sheet.Cells(row_counter, Plot_excel_sheet_column).Value + 273.15
row_counter = row_counter + 1
Loop While Plot_excel_sheet.Cells(row_counter, Plot_excel_sheet_column).Value <> ""
 
Geri
Üst