首页 > 解决方案 > 使用字符串函数根据项目编号匹配图像名称

问题描述

所以我迭代了两列项目编号和图像名称,根据几个条件寻找匹配项。我们首先查看匹配的项目编号是否有包含单词ROOM的图像,因为我们更喜欢使用环境拍摄。

如果没有,那么我们需要寻找与没有 ROOM 的项目编号匹配的图像,例如ADR700C-28.jpg,最后如果我们没有找到,我们需要回退到几个默认值之一。因此,对于上述项目 (ADR700C-28),我们将按顺序使用ADR700C-5.jpgADR700C-6.jpgADR700C-8.jpg

这就是我所拥有的,问题是我在使用嵌套函数Right()Left()字符串函数时遇到了麻烦。根据上面的预期输出,如何处理 Select Case?我还需要上述字符串函数来说明具有可变数字字符的图像名称。

数据示例:

在此处输入图像描述

预期输出:

在此处输入图像描述

Option Explicit

Public Sub test()

    Dim ws As Worksheet, arr(), r As Long, c As Long

    Set ws = ThisWorkbook.Worksheets("Sheet1")

    arr = ws.Range("A2:C" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row)
    
    On Error Resume Next
    
    For r = LBound(arr, 1) To UBound(arr, 1)

        For c = LBound(arr, 1) To UBound(arr, 1)

            ' Having trouble with this piece ..

            Select Case True

            Case Right$(arr(c, 3), 9) = "-ROOM.jpg" And Left$(arr(c, 3), Len(arr(c, 3)) - 9) = arr(r, 1)
                arr(r, 2) = arr(c, 3)
                Exit For
            Case Right$(arr(c, 3), 6) = "-5.jpg" And Left$(arr(c, 3), Len(arr(c, 3)) - 6) = arr(r, 1)
                arr(r, 2) = arr(c, 3)
                Exit For
            Case Right$(arr(c, 3), 6) = "-6.jpg" And Left$(arr(c, 3), Len(arr(c, 3)) - 6) = arr(r, 1)
                arr(r, 2) = arr(c, 3)
                Exit For

            End Select

        Next

    Next
    
    On Error GoTo 0
    
    ws.Range("A2").Resize(UBound(arr, 1), UBound(arr, 2)) = arr
End Sub 

标签: excelvbacsv

解决方案


推荐阅读