我对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 :(得分: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