เป็นไปได้ไหมที่จะได้ชื่อชีต?


12

ฉันจะรับชื่อชีตในเซลล์ได้อย่างไร (ฉันมีมากกว่าหนึ่งแผ่นฉันต้องการได้รับกระแสในแต่ละแผ่น)

คำตอบ:


7

Microsoft อธิบายว่าคุณอาจต้องใช้สูตรอาร์เรย์เพื่อรับชื่อชีต:

หากต้องการแสดงชื่อของแผ่นงานปัจจุบันให้พิมพ์สูตรต่อไปนี้เป็นสูตรอาร์เรย์

=RIGHT(CELL("filename"),LEN(CELL("filename"))-
  MAX(IF(NOT(ISERR(SEARCH("\",CELL("filename"),
  ROW(1:255)))),SEARCH("\",CELL("filename"),ROW(1:255)))))

โดยที่ "filename" เป็นตัวอักษรคำว่า "filename" ในเครื่องหมายคำพูด

หมายเหตุ: คุณต้องป้อนสูตรนี้เป็นสูตรอาร์เรย์ ในการป้อนสูตรเป็นสูตรอาร์เรย์ให้กด CTRL + SHIFT + ENTER

โปรดทราบด้วยว่านี่ขึ้นอยู่กับแพลตฟอร์มเป็นอย่างมาก ใน Mac คุณจะต้องใช้สูตรที่แตกต่างกันเนื่องจากมันใช้ตัวคั่นเส้นทางที่แตกต่างกัน นอกจากนี้อาจทำงานแตกต่างกันใน OpenOffice.org และทางเลือกอื่น ๆ และเมื่อใช้กับสมุดงานที่ไม่ได้บันทึกคุณอาจได้รับ#VALUE!แทน

เมื่อไม่ใช้สูตรอาเรย์คุณอาจได้รับชื่อเวิร์กบุ๊ก (ส่วนสุดท้ายของชื่อไฟล์) ดังนี้:

ในการส่งคืนชื่อของเวิร์กบุ๊กเท่านั้นเช่นใช้ในสูตรต่อไปนี้:

=MID(CELL("filename"),SEARCH("[",CELL("filename"))+1,
  SEARCH("]",CELL("filename"))-SEARCH("[",CELL("filename"))-1)

7

นี่คือสูตร

=MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,256)

( ลิงก์ไปยังข้อมูลเพิ่มเติม )


โปรดทราบว่าไม่จำเป็นต้องอ้างอิงถึง "A1" นอกจากนี้โปรดทราบว่านี่ไม่ได้เป็นแพลตฟอร์มที่เป็นอิสระและสูตรอาจยังคงว่างเปล่าจนกว่าคุณจะบันทึกสมุดงาน ดูเพิ่มเติมที่support.microsoft.com/kb/323225
Arjan

ถ้าฉันใส่สิ่งนี้ลงในแผ่นงานสองแผ่นมันจะมีชื่อเหมือนกันทั้งคู่ ไม่ได้รับแผ่นงานปัจจุบันที่เซลล์มีอยู่จะได้รับแผ่นงานปัจจุบันที่ฉันกำลังดูและทำซ้ำค่าในเขตข้อมูลอื่น ๆ ในแผ่นงานอื่นทั้งหมด
BrunoLM

2

ก่อนบันทึกไฟล์ของคุณมากกว่าใส่สูตรนี้ทุกที่

=RIGHT(CELL("filename"),LEN(CELL("filename"))-FIND("]",CELL("filename")))

+ นี่ใช้งานได้และสั้น ในหมายเหตุด้าน: ในการใช้ Excel ของเยอรมัน=RECHTS(ZELLE("dateiname");LÄNGE(ZELLE("dateiname"))-FINDEN("]";ZELLE("dateiname")))
nixda

ในกรณีของฉันฉันต้องใช้;แทน,เมื่อแยกองค์ประกอบของฟังก์ชัน
WoJ

0

ทดสอบและทำงานกับ M $ EXCEL และ LibreOffice CALC (สูตรเป็นภาษาสเปน):

=EXTRAEB(CELDA("filename");SI(ESERROR(1+HALLAR("]";CELDA("filename")));SI(ESERROR(3+HALLAR("'#$";CELDA("filename")));0;3+HALLAR("'#$";CELDA("filename")));1+HALLAR("]";CELDA("filename")));LARGO(CELDA("filename")))

หมายเหตุ: มันเป็นสูตรหนึ่งที่มีขนาดใหญ่เพื่อให้พอดีกับสูตรอื่นหรือใช้เพียงเซลล์เดียว

ฉันคิดว่าในภาษาอังกฤษ: EXTRAEB จะเป็น MIDB, CELDA จะเป็น CELL, SI จะเป็น IF, ESERROR จะเป็น ISERROR, HALLAR จะเป็น LINDTH และ LARTH จะเป็น LENGTH

มันจะดีกว่ามากถ้าคุณแยกสูตรขนาดใหญ่ออกเป็นหลาย ๆ เซลล์ (เพื่อหลีกเลี่ยงการเรียกหลาย ๆ ครั้ง):

  1. =CELDA("filename")
  2. =1+HALLAR("]";<CellReferenceFor_1>)
  3. =3+HALLAR("'#$";<CellReferenceFor_1>)
  4. =ESERROR(<CellReferenceFor_2>;)
  5. =ESERROR(<CellReferenceFor_3>;)
  6. =EXTRAEB(<CellReferenceFor_1>;SI(<CellReferenceFor_4>;SI(<CellReferenceFor_5>;0;<CellReferenceFor_5>);<CellReferenceFor_4>);LARGO(<CellReferenceFor_1>))

เหตุใดชื่อแผ่นชีทที่นรกจึงซับซ้อนมากในขณะที่การวางตำแหน่งชีทในรายการชีตนั้นง่ายมากในสเปรดชีตสมัยใหม่ (คำเตือนบน EXCEL 2000 อันนี้ไม่มีอยู่จริง): =HOJA(A1)

และอีกอย่าง: ทำไมฟังก์ชั่นจึงถูกเรียกแตกต่างกันในแต่ละภาษาจะเกิดอะไรขึ้นถ้าฉันมี M $ EXCEL เป็นภาษาสเปนและ CALC ในภาษาอังกฤษ (ไม่ต้องพูดภาษารัสเซียจีนและ ฯลฯ ) ช่างเป็นงานที่ยากต้องจำชื่อฟังก์ชันทั้งหมดในสำนวนทวีคูณ

ภายในพวกเขาจะถูกบันทึกไว้ด้วยชื่อ speific เช่น=SHEET(A1)เดียวกับที่=HOJA(A1)ถูกบันทึกไว้เป็น=_xlfn.SHEET(A1); ทำไมไม่ใช้กับสำนวนสุดท้ายทั้งหมด?

หรือพูดในรูปแบบอื่น: ทำไมถ้าฉันใส่เป็นภาษาอังกฤษมันบอกว่ามันไม่ใช่ชื่อฟังก์ชั่น vaild (ถ้า CALC / M $ EXCEL ไม่ใช่ภาษาอังกฤษ)

ด้วยฟังก์ชัน M $ ACCESS และ SQL ที่ไม่เกิดขึ้นในภาษาสเปนฉันสามารถพิมพ์มันเป็นภาษาสเปนESNULO()และภาษาอังกฤษISNULL()และใช้อย่างถูกต้อง

ถ้ามันซับซ้อนเกินไปที่จะยอมรับทั้งคู่ ถ้าอย่างนั้นก็ยอมรับเพียงคนเดียวเท่านั้นอย่า จำกัด วงให้เพิ่มจำนวนไอดอล!

ทีนี้, การตั้งคำถาม, เคล็ดลับที่ฉันใช้กับสูตรที่มีขนาดใหญ่นั้นคือการทดสอบว่า]มีอยู่ (M $ EXCEL) หรือไม่, ทดสอบอย่างอื่นถ้ามีอยู่'#$(LibreOffice CALC) ในขณะที่ดึงชื่อออก=CELL("filename")มา มันแปลกมาก!

อีกครั้งกับคำถามประชดประชัน: ทำไมพวกเขาเพิ่ม=SHEET(A1)และไม่=SHEETNAME(A1)? มันทำให้พวกเราทุกคนทำงานหนักขึ้น!


-1

ใน LibreOffice ฉันได้ผสมสูตรของคุณเข้ากับสิ่งต่อไปนี้และจำนวน 20 ต่อท้ายจะเป็นขีด จำกัด ของตัวละครที่จะแสดง:

= (SUBSTITUTE (MID ((ขวา (CELL ( "ชื่อไฟล์") LEN (CELL ( "ชื่อไฟล์")) - MAX (IF (NOT (ISERR (Search ( "\" เซลล์ ( "ชื่อไฟล์"), ROW (1 : 255: 255)))) ค้นหา ( "\" เซลล์ ( "ชื่อไฟล์"), ROW (1: 255: 255)))))) ค้นหา ( "# $" (ขวา (CELL ( "ชื่อไฟล์ ") LEN (CELL (" ชื่อไฟล์ ")) - MAX (IF (NOT (ISERR (Search (" \ "เซลล์ ( "ชื่อไฟล์"), ROW (1: 255: 255)))), การค้นหา (" \ " เซลล์ ( "ชื่อไฟล์"), ROW (1: 255: 255))))))) + 2,20), 1,1))


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