excel 所需结果尚不适用于VBA [已关闭]

omvjsjqw  于 2023-02-17  发布在  其他
关注(0)|答案(1)|浏览(114)
    • 已关闭**。此问题需要超过focused。当前不接受答案。
    • 想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。

2天前关闭。
Improve this question
我只是想修改一下下面的vba代码。
请推荐解决方案
谢谢

Sub GetFileNametest()
    Dim Rng As Range
    Dim arr1() As String
    Dim arr2() As String
    Dim arr3() As String
    Dim s As String
    Application.ScreenUpdating = False
'   Find last row in column A with data
    Sheets("Master").Select
    lr = Cells(Rows.Count, "A").End(xlUp).Row
'   Pre-format column C for text
    Columns("C:C").NumberFormat = "@"
'   Loop through every cell in column A starting in row 2
    For Each Rng In Range("A2:A" & lr)
        s = Rng.Value
        arr1 = Split(s, "\")
        Rng.Offset(0, 1).Value = arr1(UBound(arr1))
        arr2 = Split(arr1(UBound(arr1, 1)), "(")
        arr3 = Split(arr2(0), "-")
'       If first member of array is blank, choose the second
        If Left(arr2(0), 1) = "-" Then
            Rng.Offset(0, 2).Value = Replace(arr2(0), ".jpg", "")
        Else
            Rng.Offset(0, 2).Value = Replace(arr3(0), ".jpg", "")
        End If
    Next Rng
    
    Application.ScreenUpdating = True
End Sub

代码的结果
| 路径|文件名|代码|
| - ------|- ------|- ------|
| \服务器-电脑\目录\111138(1). jpg|111138(一). jpg|小行星11138|
| \服务器-电脑\目录\111138(2). jpg|111138(二). jpg|小行星11138|
| \服务器-电脑\目录\111138(3). jpg|111138(三). jpg|小行星11138|
| \服务器-电脑\目录\11 - 11 - 38(1). jpg|11 - 11 - 38(一). jpg|十一|
| \服务器-pc\目录\1 - 11 - 8(1). jpg|1 - 11 - 8(一). jpg|1个|
| \服务器-电脑\目录\111170(0). jpg|111170(0). jpg|小行星11170|
| \服务器-电脑\目录\111170(1). jpg|111170(一). jpg|小行星11170|
| \服务器-PC\目录\11 - 11 - 70 - 1(2). jpg|11 - 11 - 70(二). jpg|十一|
| \服务器-pc\目录\1 - 11 - 7(1). jpg|1 - 11 - 7(一). jpg|1个|
预期结果
| 路径|文件名|代码|
| - ------|- ------|- ------|
| \服务器-电脑\目录\111138(1). jpg|111138(一). jpg|小行星11138|
| \服务器-电脑\目录\111138(2). jpg|111138(二). jpg|小行星11138|
| \服务器-电脑\目录\111138(3). jpg|111138(三). jpg|小行星11138|
| \服务器-电脑\目录\11 - 11 - 38(1). jpg|11 - 11 - 38(一). jpg|11月11日|
| \服务器-pc\目录\1 - 11 - 8(1). jpg|1 - 11 - 8(一). jpg|1月11日-8日|
| \服务器-电脑\目录\111170(0). jpg|111170(0). jpg|小行星11170|
| \服务器-电脑\目录\111170(1). jpg|111170(一). jpg|小行星11170|
| \服务器-电脑\目录\11 - 11 - 70(2). jpg|11 - 11 - 70(二). jpg|一九七零年十一月十一日|
| \服务器-pc\目录\1 - 11 - 7(1). jpg|1 - 11 - 7(一). jpg|1月11日至7日|

gfttwv5a

gfttwv5a1#

Sub GetFileNametest()
    Dim Rng As Range
    Dim arr1() As String
    Dim arr2() As String
    Dim arr3() As String
    Dim s As String
    Application.ScreenUpdating = False
'   Find last row in column A with data
    Sheets("Master").Select
    lr = Cells(Rows.Count, "A").End(xlUp).Row
'   Pre-format column C for text
    Columns("C:C").NumberFormat = "@"
'   Loop through every cell in column A starting in row 2
    For Each Rng In Range("A2:A" & lr)
        s = Rng.Value
        arr1 = Split(s, "\")
        Rng.Offset(0, 1).Value = arr1(UBound(arr1))
        arr2 = Split(arr1(UBound(arr1, 1)), "(")
'below is the code I changed 
        arr3 = Split(arr2(0), "(")
'       If first member of array is blank, choose the second
'below is the code I changed 
        If Left(arr2(0), 1) = "(" Then
            Rng.Offset(0, 2).Value = Replace(arr2(0), ".jpg", "")
        Else
            Rng.Offset(0, 2).Value = Replace(arr3(0), ".jpg", "")
        End If
    Next Rng
    
    Application.ScreenUpdating = True
End Sub

相关问题