SORU
4 EYLÜL 2013, ÇARŞAMBA


Excel: bir dizedeki son karakter/string maç

Verimli bir şekilde son karakteri tanımlamak için bir dizi dize temel işlevleri kullanarak maç var mı? I. e. son karakter/dizesidize, ama bir karakterin konumunu/dizenin son oluşumubir dize. Search find uzun özyinelemeli algoritma olmadan nasıl uygulanacağını düşünemiyorum yani soldan sağa doğru çalışır. this solution artık modası geçmiş gibi görünüyor.

CEVAP
4 EYLÜL 2013, ÇARŞAMBA


Ne demek istediğini anladım sanırım. Hadi şu dize A1 hücresini (saklanan) sağ en \ istiyorsun mesela diyelim ki:

:\\Alt Klasör\Dosyaadı Sürücü.ext

Son pozisyon almak için bu formülü kullanırsınız\,:

=FIND("@",SUBSTITUTE(A1,"\","@",(LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))/LEN("\")))

-En \ karakter 24 yaşında olduğunu söyler. Bakarak bunu yapar "@" son yerine "bir" ile "@". \ Kullanarak sonuncusu belirler

(len(string)-len(substitute(string, substring, "")))\len(substring)

Bu senaryoda, alt sadece " sonunda bölümü kapalı bırakın ve sadece kullanmak:." \

=FIND("@",SUBSTITUTE(A1,"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))

Şimdi bu klasör yolunu almak için kullanabilirsiniz:

=LEFT(A1,FIND("@",SUBSTITUTE(A1,"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))))

İşte sonunda \ olmadan klasör yolu

=LEFT(A1,FIND("@",SUBSTITUTE(A1,"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))-1)

Ve sadece dosya adını almak için:

=MID(A1,FIND("@",SUBSTITUTE(A1,"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))) 1,LEN(A1))

Ancak, burada, kendine özgü bir karakteri son derece haklı için her şeyi almak için alternatif bir versiyon. Yani aynı örneği kullanırsak, bu da dosya adını döndürür:

=TRIM(RIGHT(SUBSTITUTE(A1,"\",REPT(" ",LEN(A1))),LEN(A1)))

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ElChakotay Andrich

    ElChakotay A

    10 EKİM 2013
  • Jonathan Flavell

    Jonathan Fla

    1 HAZİRAN 2006
  • thenewboston

    thenewboston

    4 ŞUBAT 2008