• DİKKAT

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

Metinden istenen bölümü almak

Katılım
19 Şubat 2022
Mesajlar
21
Excel Vers. ve Dili
360, türkçe
Merhabalar

Soldaki benim verim. Ortada ise en sağdaki formüle göre bulduğum.

Sorunum şu. Ben ortada bulduğum verimin sağındaki 2 adet tire işaretimin olmamasını istiyorum.

Yani verim 1To1406 rpt1 şeklinde gelmeli.

500-3488-4360-1To1406 rpt1-10.000000-197

1To1406 rpt1-10.000000-197

SAĞDAN(N3598;UZUNLUK(N3598)-BUL("*";YERİNEKOY(N3598;"-";"*";3)))
 
Bu mudur?
=YERİNEKOY(SAĞDAN(N3598;UZUNLUK(N3598)-BUL("*";YERİNEKOY(N3598;"-";"*";3)));"-";" ")
 
Sonuçta görmek istediğiniz veriyi manuel olarak yazarmısın
 

500-3488-4360-1To1406 rpt1-10.000000-197

1To1406 rpt1-10.000000-197
sağdaki gönderdiğim fonksiyona göre bulduğum ve benim istediğim sadece bu: 1To1406 rpt1
 
=PARÇAAL(N3598;15;14)

Şu işinizi görmez mi?
 
Yani her zaman 3 ve 4. "-" işareti arasındaki veri mi alınacak, yoksa yeri değişebiliyor mu?

Verinin yeri değişiyorsa kıstas nedir ? Örneğin herzaman veri "To" ve/veya "rpt" metinlerini mi içerecektir?

.
 
500-3488-4360-1To1406 rpt1-10.000000-197

her zaman sağdan 2inci tire ve sonrasındaki 3üncü tire ile arasındaki veri. buradaki örneğe göre 1To1406 rpt1 gibi.
 
O zaman "Libre Office" de aşağıdaki gibi REGEX fonksiyonu kullanarak yapılabilir;




.
 
MS Excel'de daha uzun bir formülle şöyle olabilir;




.
 

800-1866-4187-OB1433785-TOP-2.000000-130

OB1433785
METNİN EN SAĞINDAKİ 2 ADET TİRE VE İÇERİSİNDEKİ BİLGİLER HARİÇ GELMELİ. SANKİ BU FONKSİYON DAHA VERİMLİ OLDU.
 
İstediğiniz bu mu?




.
 
Deneyiniz..

Kod:
'Örnek
'=WMid1(A1;4;;"-")
'Alıntı
Function WMid1(Source As String, Optional Position As Integer, Optional WordCount As Integer, Optional Separator As String)
Dim arr() As String
Dim xCount As Integer
Dim wCount As Integer
Dim wFirst As Integer
Dim wLast As Integer
If Position = 0 Then Position = 1
If WordCount = 0 Then WordCount = 1
If Separator = "" Then Separator = " "
arr = VBA.Split(Trim(Source), Separator)
xCount = UBound(arr) + 1
If Position < 1 Then
wFirst = Application.Max(xCount + Position - WordCount + 1, 0)
wLast = xCount + Position
Else
wFirst = Position - 1
wLast = Application.Min(xCount - 1, Position + WordCount - 2)
End If
If xCount < 2 Or Abs(Position) > xCount Then
WMid1 = ""
Else
WMid1 = arr(wFirst)
For wCount = wFirst + 1 To wLast
WMid1 = WMid1 & Separator & arr(wCount)
Next
End If
WMid1 = Trim(WMid1)
End Function
 
Geri
Üst