2015-01-20 243 views
0

我对VBA社区和用法非常陌生,所以我的文盲有点令人尴尬。我在一个经常处理非常大的数据输出文件的实验室工作。为了统计分析这些数据文件,我们经常需要将输出数据重新排列成更具统计友好的格式。这就是我的问题。VBA - 使用动态起点复制和粘贴动态范围

我已经创建了VBA,它可以为特定的数据集执行此操作,可以一次复制并粘贴5个数据点。我希望能够帮助我创造一些东西,让我有一种更通用的方法,可以输入学习时间点的数量(通常在3到10之间)和参与者的数量(在10到100之间)并仍然在正确的工作表上完成复制/粘贴转置。

我在我的具体VBA中有什么如下。我基本上有这样做手工一路一系列B208的:212,所有的方式,通过板材13

Sheets("Raw Data").Select 
Range("B3:B7").Select 
Selection.Copy 
Sheets("Sheet1").Select 
Range("D2").Select 
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ 
    False, Transpose:=True 

这样做是什么副本五个一项研究中参与者的数据点,去我所需的面,并在与我的学习参与者相对应的行中粘贴转置。我需要为100名研究参与者进行这项研究,每个研究参与者都从D2开始,开始自己的行。

对不起,这是令人困惑。我正在努力在下面发布更多的说明。

回答

0
Sheets("Raw Data").Select 
Range("B3:B7").Select 
Selection.Copy 
Sheets("Sheet1").Select 
Range("D2").Select 
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ 
    False, Transpose:=True 

降低到

Sheets("Sheet1").Range("D2").Resize(5, 1).Value = _ 
Application.Transpose(Sheets("Raw Data").Range("B3").Resize(1, 5).Value) 

以这作为一个起点,你可以声明一些变量(或更好,使用常量)为“5”,等等,但你需要添加一些更详细的问题,包括确定下一个“粘贴”点的位置。你提到了多张表,但尚不清楚这些是如何参与操作的。

如:

Sub Tester() 

    Const DATA_PTS As Long = 5 

    Dim rngCopy As Range, rngPaste As Range 

    'start point for source data 
    Set rngCopy = Sheets("Raw Data").Range("B3").Resize(DATA_PTS, 1).Value 

    Do While Application.CountA(rngCopy) > 0 

     'Set rngPaste = ? 'what determines where data is copied to? 

     rngPaste.Resize(1, DATA_PTS).Value = _ 
      Application.Transpose(rngCopy.Value) 

     'next source range 
     Set rngCopy = rngCopy.Offset(DATA_PTS, 0) 
    Loop 

End Sub 
+0

感谢您的评论,蒂姆。我跑了你给的东西,这是一个好的开始,但不是我想要的。我确信它有更多的无法沟通我想要的东西。这可能有帮助 – avUNT 2015-01-21 01:22:48

+0

嗯,我不能发布我想要的,因为我的声望不够高,无法发布图片。我会努力增加。 – avUNT 2015-01-21 01:39:41

+0

尝试编辑您的问题来描述每个复制行需要去的地方 - 这里确实是缺少的东西。 – 2015-01-21 02:41:27