1

私は144個の列を持つExcelシートを持っています-(4列には1セットが含まれています)。つまり、私が持っている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です。配列は、完全なセットにNUllデータが含まれている場合にのみデータを取得しません。すべてのデータの取得が完了すると、データを各行に解放する必要があります。ただし、2D配列がデータを取得した行にデータを割り当てる必要がある場合は、覚えておく必要があります。

Data(1,1)=(a、b ,, b、t ,,, r、t、k、l、o)ピックアップ中Cell(2,12)=(a、b ,, b、t ,, 、r、t、k、l、o)データを解放するとき。

つまり、データを正しい行にマップする必要があります(セット単位)

ご不明な点がございましたら、お気軽にお問い合わせください。

編集: 出力テーブル

    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 に答える