【问题标题】:vba countif file name is like a stringvba countif 文件名就像一个字符串
【发布时间】:2016-10-02 06:10:21
【问题描述】:

我有一个文件夹,每小时都会保存一个文件的更新版本。格式始终是相同的“yyyymmdd_hhmmss.xlsx”。我想做的是有一个宏在文件夹中查找并返回类似于“yyyymmdd_*”的文件数

我知道我可以遍历该文件夹并执行count = count + 1,但我想尽可能避免这种情况,因为该文件夹包含数千个文件。

任何帮助将不胜感激。谢谢!

【问题讨论】:

标签: string excel vba directory countif


【解决方案1】:

尝试在您要计数的文件夹中创建.bat 文件。将以下内容放入文件中(相应更改)

@echo off
set cnt=0
for %%A in (*.xlsx) do set /a cnt+=1
echo File count = %cnt%
pause

我尝试了上面的代码,在一个文件夹中包含近 10,000 个文件,它在不到 1 秒的时间内计数。希望能帮助到你! :-)

【讨论】:

    【解决方案2】:

    如果您想按指定日期计数,此 VBA 函数应该可以工作:

    Public Function CountFiles(datestr As String, pathstr As String) As Long
        ' datestr has format yyyymmdd (no trailing underscore)
        ' pathstr has format C:\folder1\folder2\...\folderN (no trailing backslash)
        Dim count As Long
    
        count = 0
        If Dir(pathstr + "\" + datestr + "_??????.xlsx", vbNormal) Like "########_######.xlsx" Then
            count = count + 1
            While Dir() Like "########_######.xlsx"
                count = count + 1
            Wend
        End If
        CountFiles = count
    End Function
    

    一个示例调用是:

    =CountFiles("20160101", "C:\temp")
    

    要计算 ALL 个文件(无日期过滤),请使用 ???????? 作为日期字符串。

    请注意,此函数对格式正确的日期/时间戳进行了一些测试;它不会计算名为“20160101_report.xlsx”的文件。

    如果你总是计算同一个目录,你可以硬编码 pathstr。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      相关资源
      最近更新 更多