Board logo

標題: [發問] 如何擷取出不重複名稱的陣列? [打印本頁]

作者: ui123    時間: 2014-4-11 23:56     標題: 如何擷取出不重複名稱的陣列?

今天有一個問題想請教各位大大,是這樣的:
我在D槽有一資料夾複製了名稱類似的excel,想取出不要包含最後 "-數字"的名稱有那些,放置在一個陣列中:
卡住點:
問題1.無法用 arr(i) = sDir 取出各個xlsx
問題2.接下來想用len在find"-",算出位置然後不知道該刪除重複???

javascript:;

不知道有沒有人可以教教我,十分謝謝!

目前:
Sub List()
Dim arr(1000)
sPath = "D:\New folder\"
sDir = Dir(sPath & "*.xlsx", vbNormal)
i = 0
Do Until LenB(sDir) = 0
arr(i) = sDir
i = i + 1
Loop
End Sub
作者: GBKEE    時間: 2014-4-12 06:09

回復 1# ui123
  1. Option Explicit
  2. Sub List()
  3.     Dim arr(), sPath As String, sDir As String, i As Integer
  4.     'arr() 動態陣列(不限制陣列的維數)
  5.     sPath = "D:\New folder\"
  6.     sDir = Dir(sPath & "*.xlsx", vbNormal)
  7.     i = 0
  8.     Do While sDir <> ""   '傳回一個 String (字串)
  9.         ReDim Preserve arr(0 To i)  'ReDim  重置陣列維數, Preserve 保有原來陣列的內容
  10.         d(Split(sDir, "#")(0)) = ""
  11.         arr(i) = sDir
  12.         sDir = Dir            '依上一次的Dir條件繼續 的Dir
  13.         i = i + 1
  14.     Loop
  15. End Sub
複製代碼
問題2.接下來想用len在find"-",算出位置然後不知道該刪除重複???
20140401-01#35-1.xlsx
20140401-01#35-223.xlsx  
請說明要刪除哪一個?
作者: ui123    時間: 2014-4-12 09:34

親愛的版主,我想要顯示 arr(20140401-01#35,20140401-156#35) 就可以了,但是 arr(i) = sDir好像會列出所有的檔案名。

不勝感激.....
作者: ui123    時間: 2014-4-12 09:37

回復 2# GBKEE

抱歉~忘記按到回復 >""""<


親愛的版主,我想要顯示 arr(20140401-01#35,20140401-156#35) 就可以了,但是 arr(i) = sDir好像會列出所有的檔案名。

不勝感激.....
作者: GBKEE    時間: 2014-4-12 11:49

回復 4# ui123
  1. Option Explicit
  2. Sub List()
  3.     Dim sPath As String, sDir As String, i As Integer
  4.     Dim D As Object, S As Integer
  5.     Set D = CreateObject("SCRIPTING.DICTIONARY") '字典物件
  6.     sPath = "D:\New folder\"
  7.     sDir = Dir(sPath & "*.xlsx", vbNormal)
  8.     i = 0
  9.     Do While sDir <> ""   '傳回一個 String (字串)
  10.         S = InStrRev(sDir, "-") - 1
  11.         If Not D.EXISTS(Mid(sDir, 1, S)) Then D(Mid(sDir, 1, S)) = ""
  12.         'D.EXISTS(key) 字典物件的key存在傳回 True 反之 傳回 False
  13.         sDir = Dir            '依上一次的Dir條件繼續 的Dir
  14.         i = i + 1
  15.     Loop
  16.     MsgBox Join(D.keys, vbLf)
  17. End Sub
複製代碼





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)