ในการแสดงรายการเวิร์กชีตในเวิร์กบุ๊ก Excel คุณสามารถใช้แนวทาง 2 ขั้นตอน: (1) กำหนด a ชื่อ range เรียกว่า 'ชื่อแผ่นงาน' ด้วยคำสั่งแมโครเก่าและ (2) ใช้ ฟังก์ชัน INDEX เพื่อดึงชื่อแผ่นงานโดยใช้ช่วงที่มีชื่อ ในตัวอย่างที่แสดง สูตรใน B5 คือ:
=GET.WORKBOOK(1)& T ( NOW ())
หมายเหตุ: ฉันพบสูตรนี้บนกระดานข้อความ MrExcel ในโพสต์โดย T. Valko .
ถ้าฟังก์ชัน excel มากกว่าหรือเท่ากับคำอธิบาย
NS ชื่อ range 'ชื่อแผ่นงาน' ถูกสร้างขึ้นด้วยรหัสนี้:
= INDEX ( MID (sheetnames, FIND (']',sheetnames)+1,255), ROWS ($B:B5))
GET.WORKBOOK เป็นคำสั่งแมโครที่ดึงอาร์เรย์ของชื่อชีตในเวิร์กบุ๊กปัจจุบัน อาร์เรย์ผลลัพธ์มีลักษณะดังนี้:
=GET.WORKBOOK(1)& T ( NOW ())
นิพจน์ที่คลุมเครือถูกรวมเข้ากับผลลัพธ์:
{'[workbook.xlsm]Sheet1','[workbook.xlsm]Sheet2','[workbook.xlsm]Sheet3','[workbook.xlsm]Sheet4','[workbook.xlsm]Sheet5'}
จุดประสงค์ของรหัสนี้คือบังคับให้คำนวณใหม่เพื่อรับการเปลี่ยนแปลงชื่อแผ่นงาน เพราะตอนนี้คือ ฟังก์ชันระเหย โดยจะคำนวณใหม่ทุกครั้งที่มีการเปลี่ยนแปลงเวิร์กชีต ฟังก์ชัน NOW ส่งกลับค่าตัวเลขที่แสดงวันที่และเวลา ฟังก์ชัน T ส่งกลับค่า an สตริงว่าง ('') สำหรับค่าตัวเลข ดังนั้นการต่อกันจึงไม่มีผลต่อค่า
แปลงวันที่เป็นตัวเลขใน excel
กลับไปที่เวิร์กชีต เซลล์ B6 มีสูตรนี้ที่คัดลอกลงมา:
& T ( NOW ())
ทำงานจากภายในสู่ภายนอก ฟังก์ชัน MID ใช้เพื่อลบชื่อเวิร์กชีต . อาร์เรย์ผลลัพธ์มีลักษณะดังนี้:
= INDEX ( MID (sheetnames, FIND (']',sheetnames)+1,255), ROWS ($B:B5))
สิ่งนี้จะเข้าสู่ฟังก์ชัน INDEX เป็น 'array' ฟังก์ชัน ROW ใช้ช่วงขยายเพื่อสร้างจำนวนแถวที่เพิ่มขึ้น ที่แถวใหม่แต่ละแถว INDEX จะส่งกลับค่าอาร์เรย์ถัดไป เมื่อไม่มีชื่อชีตที่จะส่งออกอีกต่อไป สูตรจะส่งคืนข้อผิดพลาด #REF
หมายเหตุ: เนื่องจากสูตรนี้ใช้คำสั่งแมโคร คุณจะต้องบันทึกเป็นเวิร์กบุ๊กที่เปิดใช้งานแมโคร ถ้าคุณต้องการให้สูตรอัปเดตชื่อชีตต่อไปหลังจากที่ไฟล์ถูกปิดและเปิดใหม่ หากคุณบันทึกเป็นเวิร์กชีตปกติ รหัสชื่อแผ่นงานจะถูกตัดออก
ผู้เขียน Dave Bruns