Note: The other languages of the website are Google-translated. Back to English
ล็อกอิน  \/ 
x
or
x
สมัครสมาชิก  \/ 
x

or

วิธีแยกชื่อไฟล์จากเส้นทางแบบเต็มใน Excel อย่างรวดเร็ว

สมมติว่าคุณมีเวิร์กชีตที่มีรายการพา ธ ไฟล์ตอนนี้คุณต้องการแยกเฉพาะชื่อไฟล์ (ส่วนขวาของแบ็กสแลชสุดท้าย) จากแต่ละพา ธ ดังภาพหน้าจอต่อไปนี้ มีเคล็ดลับง่ายๆในการจัดการกับงานนี้หรือไม่?

แยกชื่อไฟล์จากเส้นทางแบบเต็มด้วยสูตรใน Excel
แยกชื่อไฟล์จากพา ธ แบบเต็มด้วย User Defined Function
แยกชื่อไฟล์จากเส้นทางแบบเต็มด้วยรหัส VBA


แยกชื่อไฟล์จากเส้นทางแบบเต็มด้วยสูตรใน Excel

ใน Excel คุณสามารถใช้สูตรด้านล่างเพื่อแยกเฉพาะชื่อไฟล์จากเส้นทางแบบเต็มได้อย่างรวดเร็ว

เลือกเซลล์ว่างป้อนสูตรด้านล่างลงไปจากนั้นกดปุ่ม เข้าสู่ กุญแจ

=MID(A1,FIND("*",SUBSTITUTE(A1,"\","*",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))+1,LEN(A1))

เคล็ดลับ: A1 คือเซลล์ที่คุณต้องการแยกชื่อไฟล์) แล้วกดปุ่ม Enter จากนั้นลากจุดจับเติมเพื่อเติมเต็มช่วงที่คุณต้องการ หลังจากนั้นชื่อไฟล์จะถูกแยกออกจากแต่ละเซลล์

ชื่อสารสกัด doc 1


แยกชื่อไฟล์จากพา ธ แบบเต็มด้วย User Defined Function

ด้วยฟังก์ชันที่กำหนดโดยผู้ใช้ดังต่อไปนี้คุณสามารถรับชื่อไฟล์ได้อย่างง่ายดายและรวดเร็ว

1. กด ALT + F11 คีย์เพื่อเปิด หน้าต่าง Microsoft Visual Basic for Applications.

2. คลิก สิ่งที่ใส่เข้าไป > โมดูลและวางรหัสต่อไปนี้ในไฟล์ หน้าต่างโมดูล.

Function FunctionGetFileName(FullPath As String) As String
'Update 20140210
Dim splitList As Variant
splitList = VBA.Split(FullPath, "\")
FunctionGetFileName = splitList(UBound(splitList, 1))
End Function

3. กด อื่น ๆ + Q ปุ่มเพื่อปิดไฟล์ Microsoft Visual Basic สำหรับแอปพลิเคชัน หน้าต่างและกลับไปที่แผ่นงาน ในเซลล์ว่างตัวอย่างเช่น B1 ให้ป้อนสูตรด้านล่างลงไปแล้วกด เข้าสู่ กุญแจ

=FunctionGetFileName(A1)

doc-extract-filenames1

จากนั้นเลือกเซลล์ B1 อีกครั้งลากจุดจับเติมไปยังช่วงที่คุณต้องการใช้สูตรนี้และชื่อไฟล์ทั้งหมดถูกแยกออกจากเส้นทางแบบเต็มดังต่อไปนี้:

doc-extract-filenames1


แยกชื่อไฟล์จากเส้นทางแบบเต็มด้วยรหัส VBA

นอกจาก User Defined Function แล้วโค้ด VBA ยังสามารถช่วยคุณแยกชื่อไฟล์ได้อีกด้วย กรุณาทำตามนี้:

1. กด ALT + F11 คีย์เพื่อเปิด หน้าต่าง Microsoft Visual Basic สำหรับแอปพลิเคชัน.

2. คลิก สิ่งที่ใส่เข้าไป > โมดูลและวางรหัสต่อไปนี้ในหน้าต่างโมดูล

Sub GetFileName()
'Update 20140210
Dim Rng As Range
Dim WorkRng As Range
Dim splitList As Variant
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
For Each Rng In WorkRng
    splitList = VBA.Split(Rng.Value, "\")
    Rng.Value = splitList(UBound(splitList, 1))
Next
End Sub

3. จากนั้นกด F5 คีย์เพื่อเรียกใช้รหัสนี้และเลือกช่วงที่คุณต้องการแยกชื่อไฟล์ดูภาพหน้าจอ:

doc-extract-filenames1

4. จากนั้นคลิก OKชื่อไฟล์ถูกแยกออกจากการเลือกดังนี้:

หมายเหตุ: ด้วยรหัส VBA นี้ข้อมูลต้นฉบับจะถูกทำลายดังนั้นคุณควรคัดลอกก่อนที่จะใช้รหัสนี้


เครื่องมือเพิ่มประสิทธิภาพการทำงานในสำนักงานที่ดีที่สุด

Kutools สำหรับ Excel ช่วยแก้ปัญหาส่วนใหญ่ของคุณและเพิ่มผลผลิตของคุณได้ถึง 80%

  • นำมาใช้ใหม่: ใส่อย่างรวดเร็ว สูตรที่ซับซ้อนแผนภูมิ และสิ่งที่คุณเคยใช้มาก่อน เข้ารหัสเซลล์ ด้วยรหัสผ่าน; สร้างรายชื่อผู้รับจดหมาย และส่งอีเมล ...
  • ซุปเปอร์ฟอร์มูล่าบาร์ (แก้ไขข้อความและสูตรหลายบรรทัดได้อย่างง่ายดาย); การอ่านเค้าโครง (อ่านและแก้ไขเซลล์จำนวนมากได้อย่างง่ายดาย); วางลงในช่วงที่กรองแล้ว...
  • ผสานเซลล์ / แถว / คอลัมน์ โดยไม่สูญเสียข้อมูล แยกเนื้อหาของเซลล์ รวมแถว / คอลัมน์ที่ซ้ำกัน... ป้องกันเซลล์ซ้ำ; เปรียบเทียบช่วง...
  • เลือกซ้ำหรือไม่ซ้ำ แถว; เลือกแถวว่าง (เซลล์ทั้งหมดว่างเปล่า); Super Find และ Fuzzy Find ในสมุดงานจำนวนมาก สุ่มเลือก ...
  • สำเนาถูกต้อง หลายเซลล์โดยไม่เปลี่ยนการอ้างอิงสูตร สร้างการอ้างอิงอัตโนมัติ ถึงหลายแผ่น ใส่สัญลักษณ์แสดงหัวข้อย่อย, กล่องกาเครื่องหมายและอื่น ๆ ...
  • แยกข้อความ, เพิ่มข้อความ, ลบตามตำแหน่ง, ลบ Space; สร้างและพิมพ์ผลรวมย่อยของเพจ แปลงระหว่างเนื้อหาของเซลล์และความคิดเห็น...
  • ซุปเปอร์ฟิลเตอร์ (บันทึกและใช้โครงร่างตัวกรองกับแผ่นงานอื่น ๆ ); การเรียงลำดับขั้นสูง ตามเดือน / สัปดาห์ / วันความถี่และอื่น ๆ ตัวกรองพิเศษ โดยตัวหนาตัวเอียง ...
  • รวมสมุดงานและแผ่นงาน; ผสานตารางตามคอลัมน์สำคัญ แยกข้อมูลออกเป็นหลายแผ่น; Batch แปลง xls, xlsx และ PDF...
  • คุณสมบัติที่ทรงพลังมากกว่า 300 รายการ. รองรับ Office / Excel 2007-2019 และ 365 รองรับทุกภาษา ใช้งานง่ายในองค์กรหรือองค์กรของคุณ ทดลองใช้ฟรี 30 วันเต็ม รับประกันคืนเงิน 60 วัน
kte แท็บ 201905

แท็บ Office นำอินเทอร์เฟซแบบแท็บมาที่ Office และทำให้งานของคุณง่ายขึ้นมาก

  • เปิดใช้งานการแก้ไขและอ่านแบบแท็บใน Word, Excel, PowerPoint, ผู้จัดพิมพ์, Access, Visio และโครงการ
  • เปิดและสร้างเอกสารหลายรายการในแท็บใหม่ของหน้าต่างเดียวกันแทนที่จะเป็นในหน้าต่างใหม่
  • เพิ่มผลผลิตของคุณ 50% และลดการคลิกเมาส์หลายร้อยครั้งให้คุณทุกวัน!
ด้านล่าง officetab
Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Rese · 1 years ago
    Very useful function. Is there a way to modify the script so it finds the filename if the path has either \ or / slashes?

    I have a spreadsheet with various hyperlinks where the underlying paths are either \ or / (back slash or forward slash) separates - I think its because some of the links to files were done just as bookmarks in Word originally, or to files on an internal doc server. Or maybe its because some path links are made with absolute vs relative path links?

    eg:

    ../../../../Documents/2ndQuarter/2019/standardcost_widget12345.pdf
    or
    \fileserver\factory23\Operations\Parts_Mgt\Documents\2ndQuarter\2019\standardcost_widget12345.pdf


    When I ran the getfilename function, it got all the filenames that were in paths with \ between directories or folders, but the links with / slashes were returned as is.
    I altered & added a second function that was similar but replaced the "\" in line 4 with "/" and called it forwardslashgetfilename and run it in a separate column after I run the first function.

    Running one function after another is not difficult, but I was curious if you can expand the code in splitList operation in line 4 to include both "\" or "/". I'm no VBA programmer but I tried splitList = VBA.Split(FullPath, "\" or "/") and it didn't work.

    Thoughts? I'm assuming its some simple syntax - I'm just clueless at this point... but I will start poking around the interwebs...

    Tks!
  • To post as a guest, your comment is unpublished.
    bob · 3 years ago
    The formula raises a #VALUE! error if the source cell has only a filename to begin with.. Embedding the entire formula in an IFERROR function solves this problem, e.g., =IFERROR(<orig formula>,A1)