在工作表之间复制数据

时间:2015-11-01 14:19:56

标签: excel vba excel-vba

我手头的问题是:我有一个包含多个工作表的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

1 个答案:

答案 0 :(得分:0)

如果我使用这个静态代码,它适用于定义的范围

import os, os.path, time, re

with open("soru2bTest.txt", "r") as ins:
array = []
for line in ins:
    array.append(line)

for e in array:
   m = re.match("^(.*/)?(?:$|(.+?)(?:(\.[^.]*$)|$))",e)
   if m :
      print(e)
      print("true")
      print ("last modified: %s" % time.ctime(os.path.getmtime(e)))

看起来有点优雅,但我不知道如何制作它"灵活"这样做直到它来到一个空单元格。

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

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

现在这个公式应该扩展到添加数据的数量。

类似

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

等取决于添加值的数量。