非常需要你的帮助。我需要从文件夹名称和子文件夹(如果有)获取最后一个字符。为了清楚地说明我的观点,我将在下面给出一个例子。
例如1:
E:\User\Images\Main_Folder_**1**\SubFolder**1**\Sub_Folder**2**\SubFolder**3**\SubFolder**4**\file.txt
需要获得字符串" 11234 "。
为Eg2:
E:\User\Images\Main_Folder_**1**\SubFolder**2**\Sub_Folder**5**\SubFolder**6**\SubFolder**9**\file.txt
需要获得字符串" 12569 "。
我尝试过以下代码来获取最后一个字符。
=FIND("@",SUBSTITUTE(A1,"\","@",(LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))/LEN("\")))
但我也需要搜索子文件夹(如果有的话)。
真的很感激,如果你们能提供任何帮助。感谢。
答案 0 :(得分:0)
问题的可能解决方案是创建UDF VBA,如下所示:
1)。将模块添加到Excel工作簿(默认为Module1)并在该模块中放置用户定义函数(UDF):
Option Explicit
Public Function GetLastChars(InputText As Range) As String
Dim tmp As String, ret As String
'skip E:\User\Images\ as per your example
tmp = Replace(InputText.Value, "E:\User\Images\", "")
'loop through the rest of subfolders
Do While (InStr(tmp, "\")) > 0
'adding the last letters to return var
ret = ret & Mid(tmp, InStr(tmp, "\") - 1, 1)
'progressing to the next subfolder
tmp = Mid(tmp, InStr(tmp, "\") + 1)
Loop
'concatenated last letters of subfolders
GetLastChars = ret
End Function
2)假设按照你的例子将原始数据(路径)插入单元格“A1”中,在单元格“B1”中输入公式=GetLastChars(A1)
;相应地,在单元格“B2”中输入公式:=GetLastChars(B1)
对应于您的示例:E:\User\Images\Main_Folder_1\SubFolder1\Sub_Folder2\SubFolder3\SubFolder4\file.txt
返回值为11234。
此UDF将适用于任意数量的子文件夹(根据您的示例跳过根部E:\User\Images
)。
例如:将路径输入为E:\User\Images\Main_Folder_1\SubFolder1\Sub_Folder2\SubFolder3\SubFolder4\SubFolder5\SubFolder6\SubFolder7\file.txt
公式将返回 11234567 。
对于路径字符串,例如:E:\ User \ Images \ Main_Folder_1 \ SubFolder1 \ Sub_Folder2 \ SubFolder3 \ SubFolder4 \ SubFolder5 \ SubFolder6 \ SubFolder7 \ SubFolder8 \ SubFolder9 \ SubFolder0 \ file.txt它返回 11234567890 等等。
希望这会有所帮助。最好的问候,
答案 1 :(得分:0)
如果您的源数据与您显示的一样;始终以E:\ User \ Images开头, IF ,最后一个字符始终为单个数字, IF 始终为< strong> 5 文件夹/子文件夹,您可以尝试:
=SUMPRODUCT(--RIGHT(TRIM(MID(SUBSTITUTE(SUBSTITUTE(A1,"E:\User\Images\",""),"\",REPT(" ",99)),(ROW(INDIRECT("1:5"))-1)*99+1,99)),1)*10^{4;3;2;1;0})
否则我会建议用户定义函数:
Option Explicit
Function GetLastFolderChar(S As String) As String
Dim T() As String, U As String
Dim I As Long
S = Replace(S, "E:\User\Images\", "")
T = Split(S, "\")
For I = LBound(T) To UBound(T) - 1
U = U & Right(T(I), 1)
Next I
GetLastFolderChar = U
End Function