|
各位老师:
我由1个数组arr0,想根据条件将数据组成新的数组,最后填入单元格。运用二维数组赋值,动态二维数组上标不可变,下标可变,此外需要转换思路将行列转置,再逐行循环赋值,赋值后的数组行为列,列为行,最后向单元格赋值时需要转置
现改用array及 join两个函数,将符合条件的数据,串成一个字符串,此处实质将二维数组变为一维数组来处理,后最后向单元格赋值时会对单元格的内容(前面运用array\join两个函数串成的字符串)作单元格分列处理,试编的代码如下:
osht.Select
orwb = osht.Cells.Find("合计").Row
arr0 = osht.Range("a7:n" & orwb - 1)
Dim jzsgfarr()
Dim azsgfarr()
m = 0: n = 0
For x = 1 To UBound(arr0, 1)
If arr0(x, 6) = "9201010100" Then
m = m + 1
'ReDim Preserve jzsgfarr(1 to 3,1 To m)
'jzsgfarr(1,m)=arr9(x,9) : jzsgfarr(2,m)=arr9(x,13) : jzsgfarr(3,m)=arr9(x,14)
'如果数据项多,此处的代码就会较长,编码容易错
ReDim Preserve jzsgfarr(1 To m)
jzsgfarr(m) = Join(Array(arr0(x, 9), arr0(x, 13), arr0(x, 14)), ",")
End If
Next
Workbooks(jsbbwbkname).Activate
If m > 0 Then
jsbbsht52.Select
If m > 7 Then
Range("a14").Resize(m - 7, 1).EntireRow.Insert CopyOrigin:=xlFormatFromRightOrBelow
Range("c14").Resize(1, 12).Copy
Range("c14").Resize(m - 7, 1).PasteSpecial Paste:=xlPasteAll
End If
Range("b7").Resize(m, 1) = Application.Transpose(jzsgfarr)
'单元格数据分列
Range("b7").Resize(m, 1).TextToColumns DataType:=xlDelimited, ConsecutiveDelimiter:=True, Comma:=True
End If
请教各位老师,有没有更巧妙的方法,不用被注释掉的方法,后面也不涉及单元格分列
谢谢
|
|