2015-01-20 245 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