gpt4 book ai didi

excel - 将项目添加到集合的最佳方式

转载 作者:行者123 更新时间:2023-12-04 21:23:45 25 4
gpt4 key购买 nike

我在 C 列中有一个按数字顺序排列的文件名列表(已经排序)。我首先遍历所述文件所在的文件夹并将其添加到临时集合中。

Do While file <> ""

l = Left(file, 3)
Length = Len(file)

If (l = "C") And Length = 13 Then
tempCol.Add file
Debug.Print file
Else
GoTo none
End If

none:
'goto next file
file = Dir

Loop

然后我遍历列 C 的长度并将每一行(保存文件名)与临时集合中的项目进行比较。如果在临时集合中找到文件名,我将其添加到单独的集合 (fCol) 中。
For i = 17 To cccount
cc = wsSum.Cells(i, 3).value
For Each e In tempCol
If "C" & cc = e Then
fCol.Add e
Debug.Print e
End If
Next e
Next i

这一切都很好,除了我觉得它可以在一个循环/集合中完成。我应该能够检查文件夹中是否存在 C 列中的文件名,然后将其添加到集合中。

有一个轻微的曲线球。最终的集合必须进行排序。在循环期间测试添加项目以对其进行排序的好方法是什么?还是我应该在一个单独的步骤中这样做?

文件名以“C”或“S”开头,我需要按数字对其进行排序。所以它应该像这样结束

S60100.XLSM
C60100.XLSM
S60270.XLSM
C60270.XLSM
C60275.XLSM
S60275.XLSM
S60280.XLSM
C60280.XLSM
S60285.XLSM
C60285.XLSM
S60290.XLSM
C60290.XLSM
C60295.XLSM
S60295.XLSM
C60300.XLSM
S60500.XLSM
C60500.XLSM
C60501.XLSM
C60503.XLSM

编辑:我的错。应该提到 C 列中的文件名只有数字!我知道,很遗憾错过了一件大事:/

编辑 2:添加了工作表的图片
enter image description here

最佳答案

使用 ArrayList反而。一个 ArrayList对象有 .Contains()方法(如果需要)和 .Sort()方法。

Sub MacroMan()

Dim arrayList As Object
Dim WS As Object
Dim tempFile As String
Const searchFolder As String = "C:\Users\MacroMan\Folder\" '// Note trailing '\'

Set arrayList = CreateObject("System.Collections.ArrayList")
Set WS = CreateObject("WScript.Shell")

For Each tempFile In Filter(Split(WS.Exec("CMD /C DIR """ & _
searchFolder & "*.*"" /B /A:-D").StdOut.ReadAll, vbCrLf), ".")

If UCase(tempFile) Like "[CS][0-9][0-9][0-9][0-9][0-9][\.]XLSM" Then
If Evaluate("=NOT(ISERROR(MATCH(" & Mid(tempFile, 2, 5) & ",C:C,0)))") Then
arrayList.Add tempFile
End If
End If
Next

arrayList.Sort

'// Print results -------
For Each x In arrayList
Debug.Print CStr(x)
Next
'// ---------------------

End Sub

关于excel - 将项目添加到集合的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32255210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com