Excel

รายชื่อแผ่นงานที่มีสูตร

List Sheet Names With Formula

สูตร Excel: แสดงรายการชื่อแผ่นงานด้วยสูตรสูตรทั่วไป |_+_| สรุป

ในการแสดงรายการเวิร์กชีตในเวิร์กบุ๊ก 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


^