2014-01-09 50 views
0

我有一個日期數組。在我的代碼中,我從具有日期數據的工作表中的列中提取日期數組,使用腳本字典刪除唯一值。Excel VBA結合變量與數組來創建新的字符串陣列

arrayIDAll = WorksheetFunction.Transpose(Sheets(2).Range(Cells(2, 3), Cells(Rows.Count, 3).End(xlUp)).Value) 



Dim dc As Object 

Set dc = CreateObject("Scripting.Dictionary") 


For i = LBound(arrayDateAll) To UBound(arrayDateAll) 
    If Not dc.Exists(arrayDateAll(i)) Then 
     dc.Add arrayDateAll(i), i 
    End If 
     If Not dcID.Exists(arrayIDAll(i)) Then 
     dcID.Add arrayIDAll(i), i 
    End If 
Next i 

Array1 = dc.Keys() 

因此,可以說是數組1是象下面這樣:

Array1 = Array(1/1/2012, 6/1/2012, 1/1/2013) 

我有兩個字符串變量

Name1 = "Weight" 
Name2 = "Cholesterol" 

我想創建一個字符串數組,看起來像這樣:

ArrayDateNames= Array("1/1/2012_Weight","6/1/2012_Weight","1/1/2013_Weight","1/1/2012_Cholesterol","6/1/2012_Cholesterol","1/1/2013_Cholesterol") 

我試試的代碼ING是不工作

Sub combinearray() 

     Dim arr As Variant, arr2 As Variant 



     arr = Array("1/1/2012", "6/1/2012", "1/1/2013") 

     ReDim Preserve arr(1 To 3) 

     Name1 = "Weight" 

     Name2 = "Cholesterol" 

     ReDim arr2(1 To 2 * UBound(arr)) 

     For i = 1 To 2 * UBound(arr) 

      If (i < 4) Then 
        arr2(i) = CStr(arr(i)) & "_" & Name1 
      Else 
        arr2(i) = CStr(arr(i - 3)) & "_" & Name2 
      End If 

      Debug.Print arr2(i) 
     Next i 




End Sub 

調試器是給我的東西,如:

1/1/2012_Weight 
6/1/2012_Weight 
1/1/2013_Weight 
1/1/2012_Cholesterol 
6/1/2012_Cholesterol 
1/1/2013_Cholesterol 
2.98210735586481E-03Weight 
4.96770988574267E-04Weight 
4.97017892644135E-04Cholesterol 
2.98210735586481E-03Cholesterol 
4.96770988574267E-04Cholesterol 

2.98210735586481E-03 
4.96770988574267E-04 

而且,在這種MWE我的報價進入日期,但我的實際數組有最新的數據。我擔心這可能會擾亂字符串連接。

回答

1

在我的系統,你的代碼的調試器輸出完美的執行:

1/1/2012_Weight 
6/1/2012_Weight 
1/1/2013_Weight 
1/1/2012_Cholesterol 
6/1/2012_Cholesterol 
1/1/2013_Cholesterol 

也許如果你嘗試:中For i = 1 To 2 * UBound(arr)For i = 1 To UBound(arr2)代替

+0

確定這做到了!謝謝!如果有人提出構建數組的更有效方法,我會保持這個問題的開放性。 – Amatya

+0

@amatya如果BernardSaucier回答了您的原始問題,則將其標記爲已回答並創建一個用於優化陣列的新問題。對貝納爾不公平,爲你提供答案,你不接受。 – Sorceri

+0

@Sorceri好的,我將爲優化陣列形成另一個問題。 – Amatya