首页 > 解决方案 > 如果文件名的第一部分与文件夹中的文件匹配,则在电子表格中返回 1 或 0

问题描述

我想根据文件名开头的一系列单元格搜索文件。

然后,我希望宏在文件名旁边返回 1 或 0(如果存在或不存在)。

我的工作表在 A2:A29 中设置了文件名,我想为 B2:B29 中存在或不存在的文件返回 1 和 0

我已经开始尝试编写宏,但我被卡住了。请帮忙

Sub SiteSignal()

Dim folderPath As String
Dim Filename As Range
folderPath = "C:\Users\RobEi\Documents\MWAM_Eisenrich\Client_Data\Sacramento\Sacramento_Flow_Pressure"
Filename = ("A2:A29")

End Sub

标签: excelvbafileloopsif-statement

解决方案


  • 循环A2:A29使用Offset以写入B2:B29.
  • folderPath将每个单元格中的值和通配符连接起来"*",然后使用该Dir函数检查是否存在与该模式匹配的文件。
  • 如果匹配,LenString返回的将是> 0.
  • Abs(TRUE)返回 1;Abs(FALSE)返回 0。

 Sub SiteSignal()

    Dim folderPath As String
    Dim Filename As Range, rng As Range

    folderPath = "C:\Users\RobEi\Documents\MWAM_Eisenrich\Client_Data\Sacramento\Sacramento_Flow_Pressure"
    Set Filename = ThisWorkbook.Worksheets("YourSheetName").Range("A2:A29")

    For Each rng In Filename
        rng.Offset(, 1).Value = Abs(Len(Dir(folderPath & "\" & rng.Value & "*")) > 0)
    Next rng

End Sub

推荐阅读