1

我有一个 excel 表,它有 144 列(4 列包含一组)。即我有 36 组。现在我怎样才能只从 2000X350 Excel 表格矩阵数据中取出非空数据,使用 VBScript 到二维数组中?

这是一个示例表:

   PID  T1 T1SD T1CD T1ST T2 T2SD T2CD T2ST T3 T3SD T3CD T3ST T4 T4SD T4CD T4ST ........
    10  a   b          b   t             r                     t   k   l     o
    11                     p   p    m    d   n   n    n    b
    .
    .

列号 11 上的 PID always.Evey 集合由 (TN,TNSD,TNCD,TNST) 组成,其中 N=1 到 36。只有当一个集合完整包含 NUll 数据时,阵列才会将数据拾取到其中。一旦完成所有数据提取,它应该将数据释放到每一行。但是应该记住的是,如果二维数组应该将数据分配给从中提取数据的行。

Data(1,1)=(a,b,,b,t,,,r,t,k,l,o) 拾取时 Cell(2,12)=(a,b,,b,t,, ,r,t,k,l,o) 释放数据时。

这意味着数据应该需要映射到正确的行(setwise)

如果您有任何困惑,请告诉我。

编辑: 输出表

    PID  T1 T1SD T1CD T1ST T2 T2SD T2CD T2ST  T3 T3SD T3CD T3ST T4 T4SD T4CD T4ST
    10  a   b          b   t              r    t   k   l     o
    11  p   p    m     d   n   n    n    b

谢谢,奥雅纳

4

1 回答 1

1

这是一个部分答案,应该可以帮助您朝着正确的方向前进。

Sub Macro1()

Dim whichT As Integer
Dim whichC As Integer
Dim allNull As Boolean
Dim contents As String

For whichT = 0 to 8 ' this is which T set
  allNull = True
  for whichC = 1 to 4 ' this is which of the 4 elements
    contents = Cells(2, whichT * 4 + whichC + 1)
    Debug.Print "Contents of col ", whichT * 4 + whichC + 1, "are", contents
    If Len(contents) > 0 then allNull = False  ' any one of the non-blank elements sets to False
  Next whichC
  If allNull Then ... ' do some processing to move over the next 4.
Next whichT
End Sub
于 2012-12-14T20:47:38.470 回答