在某些条件下自动传输数据

时间:2012-02-07 19:24:44

标签: excel vba excel-vba

这是我第一次使用本网站,如果有人能帮我在Excel中编写Macro代码来执行以下操作,我将非常感激。

情况:

  1. 我有8个名为Data AData B,...,Data H的数据表。
  2. 我有一个名为Summary的摘要表。
  3. 在8个数据表的每一个数据表中, n 来自单元格C8和水平(即C8D8,{{1}的ID数量},...)。
  4. 每个ID都在垂直单元格下有相关数据。 (即单元格E8中的ID包含C8C9C10C13C14)的相关数据。
  5. 待办事项:

    1. 激活宏后,转到C15,从Data A开始检查单元格是否为空。
    2. 如果单元格不为空,请复制单元格C8中的ID(字符串和数字组合)以及(C8C9)和({{1}的相关数据(C10张到C13张(C15Summary)。
    3. 复制后,移至A1张上A6的下一个单元格,重复步骤2.此时,复制的目的地为D8Data AB1表上。
    4. 如果B6表上第8行的单元格为空,请移至下一个数据表(Summary)。
    5. 重复步骤2,3和4,直到在Data A表单上找到空单元格。
    6. 我希望能找到能够做到这一点的人。

      这是我到目前为止(请理解我是VBA的初学者):

      Data B

1 个答案:

答案 0 :(得分:1)

未测试:

Sub CopyToSummary()

Dim arrSheets, i As Integer
Dim rngId As Range, rngSummary As Range

    arrSheets = Array("A", "B", "C", "D", _
                      "E", "F", "G", "H")

    Set rngSummary = ThisWorkbook.Sheets("Summary").Range("A1")

    For i = LBound(arrSheets) To UBound(arrSheets)

        Set rngId = ThisWorkbook.Sheets("Data " & arrSheets(i)).Range("C8")
        Do While Len(rngId.Value) > 0

            With rngSummary
                .Value = rngId.Value
                .Offset(1, 0).Value = rngId.Offset(1, 0).Value
                'etc for the other values
            End With

            Set rngSummary = rngSummary.Offset(0, 1)
            Set rngId = rngId.Offset(0, 1)
        Loop

    Next i

End Sub