Excel 如何使用vbscript将一行空数据和非空数据中的所有非空数据打包到一个数组中

Excel 如何使用vbscript将一行空数据和非空数据中的所有非空数据打包到一个数组中,excel,vbscript,vba,Excel,Vbscript,Vba,我有一张excel表格,有144张表格(4列包含一套表格),也就是说我有36套表格。现在,如何使用VBScript将2000X350 Excel表格矩阵数据中的非空数据仅取出到2D数组中 下面是一个示例表: PID T1 T1SD T1CD T1ST T2 T2SD T2CD T2ST T3 T3SD T3CD T3ST T4 T4SD T4CD T4ST ........ 10 a b b t r

我有一张excel表格,有144张表格(4列包含一套表格),也就是说我有36套表格。现在,如何使用VBScript将2000X350 Excel表格矩阵数据中的非空数据仅取出到2D数组中

下面是一个示例表:

   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始终。每个集合由(TN、TNSD、TNCD、TNST)组成,其中N=1至36。只有当一组完整数据包含空数据时,数组才会将数据提取到数组中。完成所有数据提取后,应将数据松弛到每一行。但需要记住的是,若2D数组应该将数据分配给从中拾取数据的行,那个么

拾取期间的数据(1,1)=(a、b、b、t、r、t、k、l、o) 单元(2,12)=(a、b、b、t、r、t、k、l、o)在释放数据时

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

如果您有任何疑问,请告诉我

编辑: 输出表


谢谢,奥雅纳这里有一个局部的答案,它会让你朝着正确的方向前进

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

下面是一个部分答案,它会让你朝着正确的方向前进

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

有谁能帮我解决这个问题吗?我真的被卡住了。你想把T1ST下的b移到T1CD吗?然后t在T1ST下?然后r在T2下?也许前后各有一个。不,这里有4列。所以现在我想从右向左移动数据。数据移动条件是假设一个4集的数据可以向左移动,如果它的左侧4列完全为空,如果它的左侧有一个数据集,则不允许移动。这样,所有的空集和非空集都将被划分。希望你现在明白上面的表格是你的,对吗?你能编辑你的帖子并把你想要的东西放在一个表格里吗?我给你一个实际的快照,在你能看到的实际列的地方,这是我概念上发布的一个。有人能帮我解决这个问题吗?我真的被卡住了。你想把T1ST下的b移到T1CD吗?然后t在T1ST下?然后r在T2下?也许前后各有一个。不,这里有4列。所以现在我想从右向左移动数据。数据移动条件是假设一个4集的数据可以向左移动,如果它的左侧4列完全为空,如果它的左侧有一个数据集,则不允许移动。这样,所有的空集和非空集都将被划分。希望你现在明白上面的表格是你的,对吗?你能编辑你的帖子并把你想要的内容放在一个表格里吗?我给你一个实际的快照,在你能看到的实际列的地方,这是我概念上发布的一个。但是我能不能有一个通用的完整版本的代码,因为当我尝试一些数据时,它被正确地移动了,但大部分时间它不是…阿鲁普,尽你最大的努力吧“If allNull Then…”如果您仍有问题,请发布您的问题,社区将对此进行查看。因此,我们通常不会回答“请为我解决此编程问题”。但是,如果您付出了巨大努力并遇到问题,我们会提供帮助。但是“allNull”“国旗的意义?意思是它的用途?这意味着所有的set(Tx、TxSD、TxCD和TxST)都是空的,可以被替换。我将尝试对你的想法进行编码,同时你能看到我在搜索stack overflow搜索引擎时发现的一篇帖子吗?但我可以有一个通用的完整版本的代码吗,当我尝试一些数据时,它被正确地转移了,但大多数tim它不是…奥雅纳,尽你最大的努力在“If allNull Then…”如果你仍然有问题,发布你所拥有的,社区将对此进行检查。所以通常不会回答诸如“请帮我解决这个编程问题”之类的问题。但是,如果您付出了很大努力并且遇到了问题,我们会提供帮助。但是“allNull”标志的意义是什么?意思是它的用途?这意味着所有的set(Tx、TxSD、TxCD和TxST)都是空的,可以被替换。我将尝试对你的想法进行编码,同时你能看到我在搜索stack overflow搜索引擎时发现的一篇帖子吗?