Excel VBA:如何引用相对位置

时间:2018-04-16 12:12:52

标签: excel vba

我使用数据验证制作了一张(Sheet2),Sheet2中的A1可以取1到6的不同值(ID)。范围C4中的单元格:G9取决于A1中的值。

现在我正在构建Sheet1,我希望将Sheet2中的数据扩展为一个工作表。基本上,列A包含在Sheet2,A1中的ID,我希望将Sheet2(C4:G9)中的数据写入B列,同时将A1,Sheet2设置为A列,Sheet1中的一个值。

我知道如何为每个ID编写一个宏,但是我必须向下移动5行并对下一个ID执行相同操作。我有数百个,并且要一个接一个地完成它...任何提示如何快速完成?

enter image description here

enter image description here

[![在此处输入图像说明] [3]] [3]

1 个答案:

答案 0 :(得分:0)

根据评论,我认为这应该回答你的问题:

Public Sub TransferData()
    Dim wb As Workbook
    Dim sh1 As Worksheet
    Dim sh2 As Worksheet

    Set wb = ActiveWorkbook
    Set sh1 = wb.Worksheets("Sheet1")
    Set sh2 = wb.Worksheets("Sheet2")

    ' Sheet 2 contains ID's and data. For each id, we want to:
    '   Make a new row for it in sheet1
    '   For each piece of data (C:G), there should be a row with the ID and that data

    Dim k As Range
    Dim r As Integer
    Dim i As Range
    Dim col As Range

    Set i = sh1.Cells(2, 1)
    For Each k In sh2.Range(sh2.Cells(2, 1), sh2.Cells.SpecialCells(xlCellTypeLastCell))
        ' ID is k.value
        For Each col In sh2.Range(k.Offset(0, 2), k.Offset(0, 6))
            i.Value = k.Value
            i.Offset(0, 1).Value = col.Value
            Set i = i.Offset(1, 0)
        Next col
    Next k
End Sub

它会循环显示所有原始ID({1}}的第1列),并且对于ID数据的每个数据(列Sheet2 - C),它会在您的内容中添加一行在列G中具有相同Sheet1的其他工作表(ID),然后是A列中的特定数据点