如何将值之间的空格添加到vba数组中



我在vba中通过循环表中的单元格(originalWS)创建了一个数组。假设细胞(2,5)至(2,12)具有以下特征:

(2,5)Item
(3,5)Type 
(4,5)Nominal Diameter
(5,5)Lead
.
.
.
(12,5)For Use with End Blocks

因此,当我用下面的代码循环时,我得到一个数组,看起来像这样:

[项目、类型、公称直径、导线…,与端块一起使用]。

但是,我想在数组中的每个值之间添加两个空格。所以它看起来像这样:

[项目,",",类型,">

ReDim propertyArr(1, lastRow)
For i = 1 To lastRow
propertyArr(1, i) = originalWS.Cells(i + 1, 5).Value
Debug.Print propertyArr(1, i)
Next

我已经尝试通过数组的最终总大小so(lastRow*3)循环到,然后前进3。然而,我很难弄清楚如何重置我的org.cells(I,5)值,使它们是连续的。

换句话说,当我循环步进3时,我的值将是:

propertyArr(1,1) = originalWS.Cells(2,5).value
propertyArr(1,4) = originalWS.cells(5,5).value
propertyArr(1,7) = originalWS.cells(8,5).value

当我从工作表中的连续列表中获取值时,我如何循环以便每隔2个位置将值存储在数组中。

我能做到这一点而不必添加额外的空行吗一种在原始循环中的每个值之间添加两个空格而不必添加额外的空行的方法?

或者,在第一次创建数组后,我可以在每个值之间添加两个空格吗?

这应该可以做到,

Dim lRowNo As Long
lRowNo = lastRow * 3
ReDim propertyArr(1, lRowNo)
For i = 1 To lRowNo 
If i Mod 3 = 1 Then
propertyArr(1, i) = originalWS.Cells(i + 1, 5).Value
Else
propertyArr(1, i) = ""
End If
Debug.Print propertyArr(1, i)
Next

类似于:

Sub ytrewq()
Dim propertyArr(), lastRow As Long
Dim originalWS As Worksheet
Set originalWS = ActiveSheet
lastRow = 5
ReDim propertyArr(1, 2 * lastRow)
For i = 1 To 2 * lastRow Step 2
propertyArr(1, i) = originalWS.Cells(i + 1, 5).Value
propertyArr(1, i + 1) = ""
Debug.Print propertyArr(1, i)
Next
End Sub

未测试

您还可以稍微展开循环,以便更有效地执行此操作。注意,对于每次迭代,i不是按1递增,而是按3递增。

Public Sub test()
Dim lastRow As Long
lastRow = 6
Dim lastIndex As Long
lastIndex = lastRow * 3
ReDim propertyArr(1 To lastIndex)
Dim i As Long
For i = 1 To lastIndex Step 3
propertyArr(i) = CInt(i / 3)
propertyArr(i + 1) = vbNullString
propertyArr(i + 2) = vbNullString
Next

End Sub

或者没有循环

Dim ws As Worksheet
Set ws = Sheets(1)
propertyarr = Join(Application.Transpose(ws.Range("E1:E5")), ","""","""",")

放回阵列

propertyarr = Split(Join(Application.Transpose(ws.Range("E1:E5")), ",,,"), ",")

我找到了答案。我没有正确更新我需要的单元格。参见以下代码:

count = 3
lastIndex = lastRow * 3
ReDim propertyArr(1, lastIndex)
For i = 1 To lastIndex Step 3
propertyArr(1, i) = originalWS.Cells((count - 1), 5)
count = count + 1
Next

最新更新