ฉันต้องการค้นหาช่องว่างสุดท้ายในเซลล์ XLS


17

ฉันมีแผ่นงาน Excel ที่มีค่าข้อความเช่นใน A1: "นี่คือข้อความ" ฉันต้องการค้นหาตำแหน่งของอักขระช่องว่างสุดท้าย มีสูตร excel ที่จะให้ผลลัพธ์ที่ฉันต้องการหรือไม่ ฉันได้ลองค้นหาและค้นหา แต่สิ่งเหล่านี้เริ่มจากซ้ายสิ่งที่ฉันต้องการคือเริ่มจากขวา


ซ้ำไซต์ข้ามเกี่ยวกับเหล้าองุ่นเดียวกัน: stackoverflow.com/q/18617349
Mathieu K.

คำตอบ:


28

ถ้าตามค่าว่างคุณหมายถึง "space" และโดย XLS คุณหมายถึง Excel คุณสามารถใช้สูตรนี้ได้ (สมมติว่าการทดสอบที่คุณต้องการหาพื้นที่สุดท้ายอยู่ในนั้นA1):

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

คุณสามารถแบ่งออกเป็น 3 ส่วน:

  • LEN(A1)-LEN(SUBSTITUTE(A1," ",""))ช่วยให้คุณมีจำนวนของช่องว่างที่ขอเรียกว่าx,
  • SUBSTITUTE(A1," ","☃",[x])จะแทนที่xพื้นที่ว่าง (ดังนั้นอันสุดท้าย) โดยมนุษย์หิมะ
  • FIND("☃",[...])จะให้ตำแหน่งของมนุษย์หิมะ ซึ่งเป็นตำแหน่งของช่องว่างสุดท้าย

ทำงานได้สมบูรณ์แบบ ขอบคุณ มันเอาฉันในขณะที่จะคิดออกว่าทำไมมันทำงานทั้งๆที่ของคำอธิบายของคุณ :)
Dheer

5
+1 สำหรับคำตอบที่ดีและมีรายละเอียดและอักขระทดแทนที่สร้างสรรค์ที่สุด
Doug Glancy

ใช้ได้ทั้งใน Lotus Symphony Spreadsheets และ Google ชีต
Mathieu K.

8

อีกวิธีหนึ่งคืออนุญาตให้ใช้อักขระใดก็ได้ใน A1 (แม้แต่ตุ๊กตาหิมะ!)

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

FIND มีอาร์กิวเมนต์ที่สามที่กำหนดตำแหน่งเริ่มต้นของการค้นหาถ้าคุณใช้อาร์เรย์ของค่าจำนวนเต็ม 1 ถึง n (โดยที่ n คือความยาวของ A1) กับพารามิเตอร์นั้นคุณจะได้รับอาร์เรย์กลับมาพร้อมกับตัวเลขสุดท้ายเป็นตำแหน่งของ พื้นที่สุดท้าย

LOOKUPจากนั้นแยกตัวเลขนั้นโดยค้นหาค่าที่มากกว่าค่าใด ๆ ที่อาจพบได้ในอาร์เรย์นั้นซึ่งในกรณีนี้จะพบหมายเลขสุดท้าย

ในExcel 2010หรือหลังจากนั้นคุณสามารถใช้AGGREGATEฟังก์ชั่นเช่นนี้ได้

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

FINDส่งคืนอาร์เรย์เดียวกันกับก่อนและโดยใช้ 14 เป็นอาร์กิวเมนต์ที่AGGREGATE1 และ 1 เป็นอาร์เรย์สุดท้ายที่คุณได้รับค่ามากที่สุดในอาร์เรย์ในขณะที่ละเว้นข้อผิดพลาด [6]


1
ใช้งานได้ดี ถึงแม้ว่าผมจะเป็นนักพัฒนาบาง [ยาว] เวลาที่ผ่านมาผมยังไม่สามารถคิดออกวิธีการและเหตุผลงานทางอ้อม :)
Dheer

1
สมมติว่า A1 มี 12 ตัวอักษรจากนั้นส่วนนี้"1:"&LEN(A1)ประเมินเป็น "1:12" - นั่นคือสตริงที่ ROW ไม่สามารถดำเนินการได้ แต่ INDIRECT จะแปลงสตริงเป็นการอ้างอิงที่ถูกต้องซึ่ง ROW สามารถจัดการได้ ROW (1:12) จะให้คุณ {1 ; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12}
แบร์รี่ฮูดินี่

ขอบคุณสำหรับ clarif ทำให้รู้สึกบางอย่างในขณะนี้ ซึ่งหมายความว่าค้นหาตัวเองทำงานได้อย่างถูกต้องกับอาเรย์และได้รับการดำเนินการสำหรับทุกค่าเป็นตำแหน่งเริ่มต้น ...
Dheer

ถูกต้องแล้ว FIND จะส่งกลับอาร์เรย์เช่นถ้ามี A1 barry larry houdiniแล้ว FIND จะส่งคืนอาร์เรย์นี้{6;6;6;6;6;6;12;12;12;12;12;12;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}และการค้นหาและ / หรือ AGGREGATE จะใช้ค่าตัวเลขสุดท้าย / ใหญ่ที่สุดจากนั้นเช่น 12
barry houdini

หมายเหตุ: ใช้งานได้ใน Lotus Symphony Spreadsheets มันไม่ทำงานใน Google ชีตแทนที่จะค้นหาเหตุการณ์แรก
Mathieu K.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.