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

  • gadgetgal38

    gadgetgal38

    9 HAZİRAN 2009
  • LIVESTRONG.COM

    LIVESTRONG.C

    5 EKİM 2005
  • Matt Davis

    Matt Davis

    4 ŞUBAT 2006