ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
15 visibility
موضوع: آفیس توسط:

Barry یک کاربرگ دارد که در آن یک ستون حاوی مسیرهای فایل زیادی است. او راهی می خواهد که فقط نام فایل (بخش سمت راست بک اسلش نهایی) را از هر مسیر استخراج کند. او فکر می کند که آیا راه سریعی برای انجام این کار بدون استفاده از ویژگی Text to Columns وجود دارد یا خیر.

بسته به اینکه بخواهید از ماکرو استفاده کنید یا نه، چندین راه مختلف وجود دارد.

اگر طول نام فایل های شما یکسان است، می توانید به سادگی از تابع RIGHT برای بیرون کشیدن آخرین کاراکترها استفاده کنید. (این فرمول فرض می کند که مسیر کامل و نام فایل در سلول A1 است.)

=RIGHT(A1,11)

فرض بر این است که نام فایل همیشه 11 کاراکتر است، مانند "text001.txt". اگر طول نام فایل در هر نمونه متفاوت باشد، این روش کار نخواهد کرد. در عوض، می توانید این فرمول را امتحان کنید:

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

توجه داشته باشید که فرمول دو بار از تابع SUBSTITUTE استفاده می کند. در هر مورد، بک اسلش () را با چیز دیگری جایگزین می کند. بار اول همه آنها را با مقدار ASCII 1 جایگزین می کند و بار دوم آنها را با هیچ (رشته خالی) جایگزین می کند تا بتواند تعیین کند که چند بک اسلش در مسیر اصلی وجود دارد. تابع MID ​​برای تعیین مکان آخرین بک اسلش در مسیر (با کمک توابع FIND و SUBSTITUTE) و برگرداندن همه چیز بعد از آن نقطه استفاده می شود.

اگر مطمئن هستید که نام فایل هرگز بیش از 99 کاراکتر نخواهد بود، می توانید از فرمول کوتاه تری استفاده کنید:

=TRIM(RIGHT(SUBSTITUTE(A2,"",REPT(" ",100)),99))

این فرمول همه بک اسلش ها را با 100 فاصله جایگزین می کند، 99 کاراکتر سمت راست را از رشته به دست می آورد (این نام فایل با تعدادی فاصله در جلوی آن است) و سپس تمام فاصله ها را حذف می کند.

اگر می خواهید از یک ماکرو استفاده کنید، می توانید یک تابع بسیار کوتاه ایجاد کنید که یک رشته (مسیر کامل، در این مورد) را بر اساس جداکننده ها جدا می کند:

Function GetFileName(File_Path) As String
    Dim Parts

    Parts = Split(File_Path, Application.PathSeparator)
    GetFileName = Parts(UBound(Parts))
End Function

بهت گفتم کوتاهه! تابعی که کار سنگین را انجام می دهد تابع Split است که یک رشته را بر اساس جداکننده ای که شما مشخص کرده اید جدا می کند و قطعات را در یک آرایه قرار می دهد. در این مثال، تابع Split از هر جداکننده مسیری که برای سیستمی که اکسل روی آن در حال اجرا است مناسب است، به عنوان جداکننده استفاده می کند.

آخرین عنصر آرایه به دست آمده (تعیین شده با تابع UBound) شامل بخشی از مسیر اصلی است که در سمت راست جداکننده آخرین مسیر است - نام فایل.

شما می توانید یک تابع حتی کوتاه تر برای انجام کار ایجاد کنید:

Function GetFileName(File_Path) As String
    GetFileName=Mid(File_Path,InStrRev(File_Path,"")+1
End Function

برای استفاده از هر دو تابع، فرمولی مانند زیر را در یک سلول قرار دهید:

=GetFileName(A1)
اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

119 نفر آنلاین
0 عضو و 119 مهمان در سایت حاضرند
بازدید امروز: 18540
بازدید دیروز: 17680
بازدید کل: 15143233
...