Bir XLS Hücresindeki son Boşluğu bulmam gerekiyor


18

Metin değerleri ile bir Excel sayfası var, örneğin A1: "Bu metindir". Son boşluk karakterinin konumunu bulmam gerekiyor. İstediğim sonucu verecek bir excel formülü var mı? FIND ve SEARCH'ı denedim, ancak bunlar soldan başlıyor, ihtiyacım olan sağdan başlamak.


Aynı vintage hakkında siteler arası kopya: stackoverflow.com/q/18617349
Mathieu K.

Yanıtlar:


29

Boş değerle "boşluk" anlamına gelir ve XLS ile Excel anlamına gelirse, bu formülü kullanabilirsiniz (son alanı bulmak istediğiniz testin olduğu varsayılırsa A1):

=FIND("☃",SUBSTITUTE(A1," ","☃",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))

3 parçaya bölebilirsiniz:

  • LEN(A1)-LEN(SUBSTITUTE(A1," ",""))size boşluk sayısını verir, diyelim ki x,
  • SUBSTITUTE(A1," ","☃",[x])yerini alacak xbir kardan adam tarafından inci alanı (böylece sonuncusu),
  • FIND("☃",[...])size kardan adam konumunu verecektir. Son uzayın konumu budur.

Mükemmel çalışıyor. Teşekkürler. Neden açıklamanıza rağmen işe yaradığını anlamak biraz zaman aldı :)
Dheer

6
Güzel, ayrıntılı bir cevap ve en yaratıcı yedek karakter için +1.
Doug Glancy

Ayrıca LibreOffice Calc ve Google E-Tablolar'da da çalışır.
Mathieu K.

8

İşte başka bir yol, A1'de herhangi bir karaktere izin verilir (hatta kardan adamlar!)

=LOOKUP(2^15,FIND(" ",A1,ROW(INDIRECT("1:"&LEN(A1)))))

FIND aramanın başlangıç ​​konumunu tanımlayan üçüncü bir argümana sahiptir, eğer bu parametreye 1'e bir tamsayı değeri dizisi uygularsanız (burada n, A1'in uzunluğudur), son sayının dizinin konumu olduğu bir dizi geri alırsınız son boşluk.

LOOKUPardından bu dizide bulunabilecek herhangi bir değerden daha büyük bir değer arayarak bu sayıyı çıkarır; bu durumda son sayı bulunur

İçinde Excel 2010veya daha sonra böyle bir AGGREGATEişlevi kullanabilirsiniz

=AGGREGATE(14,6,FIND(" ",A1,ROW(INDIRECT("1:"&LEN(A1)))),1)

FINDönceki diziyle aynı diziyi döndürür ve dizideki AGGREGATEen büyük değeri alırken son argüman olarak 14 ve son argüman olarak 14'ü kullanır , hataları yok sayarken [6]


1
harika çalışıyor. Ben [uzun] zaman önce geliştirici olmasına rağmen hala INDIRECT'in nasıl ve neden çalıştığını
anlayamıyorum

1
A1 12 karakterden varsayarsak o zaman bu bölüm "1:"&LEN(A1)"1:12" ile değerlendirir - Bir SIRA işleyemez dize ancak DOLAYLI dönüştürür SATIR geçerli bir referansa bir dize var olabilir SATIR (1:12) Ardından size {1 verir, böylece sap ; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12}
barry houdini

Clarif için teşekkürler. Şimdi biraz mantıklı geliyor. Yani Kendini bul açıkça dizi ile çalışır ve başlangıç ​​değeri olarak her değer için idam ...
Dheer

Doğru, FIND bir dizi döndürür, örneğin A1 içeriyorsa barry larry houdiniFIND bu diziyi döndürür {6;6;6;6;6;6;12;12;12;12;12;12;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}ve LOOKUP ve / veya AGGREGATE bundan son / en büyük sayısal değeri alır, yani 12
barry houdini

Not: Bu LibreOffice Calc'de çalışır. İlk etapta bulmak yerine Google E-Tablolar'da çalışmaz.
Mathieu K.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.