2015-11-01 88 views
0

我手边有一个问题:我有一个Excel文件有多个工作表,它应该使用工作表A中的单元格中的值来填充工作表B中的单元格。我为此做了一个小宏,但它只是没有不应该这样工作。要么进入完全不同的单元格,抛出错误或复制公式而不是数值。在工作表之间复制数据

的细节是:

数据在工作表A在完成H列和第二行中开始。这些细胞中的数据是来自不同领域的CONCATENATE。

循环应从工作表A中的H2中取第一个值并将其放入工作表B,B1中。然后转到工作表A中的H3,并将此值放在工作表B,C1中,等等。

它应该这样做,直到有没有在工作表左侧A柱H.

 Sub Test2() 

' Select the worksheet 

Worksheets("A").Activate 

' Select first cell with data 

Range("H2").Select 

' Loop until no data present 

    Do Until IsEmpty(ActiveCell) 

' Helper Variable for startpoint in worksheet B 

Dim i As Integer 
i = 8 

    ' Copy first value 
    Selection.Copy 

    ' Go to different worksheet 
    Worksheets("B").Activate 

    ' Select first data entry point 
    ActiveCell(1, i).Select 

    ' Paste Data 
    Selection.Paste 

    ' Move helper variable in next column 
    i = i + 1 

    ' Return to worksheet A 
    Worksheets("A").Activate 

    ' Select next row 
    ActiveCell.Offset(1, 0).Select 

    Loop 

    End Sub 

回答

0

值。如果我用这个它为定义的范围静态代码

Sub Macro1() 
Worksheets("A").Activate 
Range("H2:H12").Select 
Selection.Copy 
Worksheets("B").Activate 
Range("B1:H13").Select 
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ 
    False, Transpose:=True 
Application.CutCopyMode = False 
End Sub 

似乎有点更优雅但是我不知道如何让它变得“灵活”,直到它变成一个空单元。

我遇到的下一个问题是现在在工作表B中它应该用这个东西做一个矩阵。后的值是第1行,B列并在我有以下公式:

=Table2[[#Headers];[Column1]] 

现在,这个公式应扩展到所增加的数据的数量。

所以像

=Table2[[#Headers];[Column2]] 
=Table2[[#Headers];[Column3]] 
.... 

等取决于附加价值的数字。