Excel VBA将变量与数组组合以创建新的字符串数组

时间:2014-01-09 16:43:59

标签: arrays excel-vba vba excel

我有一系列日期。在我的代码中,我从包含日期数据的工作表中的列中提取日期数组,使用脚本字典删除唯一值。

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()

让我们说Array1如下所示:

 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")

我正在尝试的代码无效

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 个答案:

答案 0 :(得分: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 UBound(arr2)而不是For i = 1 To 2 * UBound(arr)