2014-06-30 34 views
-3

我目前有一个巨大的工作表(工作表1)包含多行(Excel的最大),我想解析这276行/列到一个单独的工作表与标题。Excel宏解析行/列到新工作表

标题用于Sheet2的将来自柱A(其被重复276次,因此只需要进行一次选择的),而数据是在C和D.

我试图录制使用VBA宏,但我没有编辑知识来循环所有行。

这似乎很有帮助,但并不完全。 https://sites.google.com/a/madrocketscientist.com/jerrybeaucaires-excelassistant/parse-functions/columns-to-sheets

微距我录:

Sub snp() 
    ' 
    ' snp Macro 
    ' transpose snp 
    ' 
    ' Keyboard Shortcut: Ctrl+q 
    ' 
     Sheets("Sheet1").Select 
     Range("C24566").Select 
     Application.Goto Reference:="R24566C3:R24841C4" 
     Selection.Copy 
     Sheets("Sheet2").Select 
     ActiveSheet.Paste 
     Sheets("Sheet1").Select 
     ActiveWindow.SmallScroll Down:=252 
     Range("A24841").Select 
     Application.CutCopyMode = False 
     Selection.Copy 
     Sheets("Sheet2").Select 
     Range("FX1").Select 
     ActiveSheet.Paste 
    End Sub 

,不过该宏只是做同样的事情一遍又一遍(因为我没有任何宏观的知识,知道如何使它跳到下一组276 ...)。

帮助?谢谢!

回答

1

以下代码使一些假设:

  1. 你有比“工作表Sheet1”之外没有其他工作表
  2. 这是确定调用所有未来表“SheetX”
  3. 仅列A被复制
  4. 不要紧,有关最后张纸具有复制
  5. 额外的空格一旦你一旦运行它,您将不再需要再次运行(它不会再工作)
  6. 你有源工作表(工作表Sheet1)无头或任何纸张的是贝因复制到

改编此,以满足您的需求,但这应该让你开始

Sub Parse() 

Dim SheetNum As Integer 
Dim Par As Range 
SheetNum = 2 

Do While Sheets("Sheet1").Range("A1") <> "" 

Sheets.Add.Name = "Sheet" & SheetNum 

X = Sheets("Sheet1").Range("A1").Offset(256, 0).Address 

Sheets("Sheet1").Range("A1:" & X).Copy 

Sheets("Sheet" & SheetNum).Range("A1").PasteSpecial 

Sheets("Sheet1").Rows("1:256").Delete 

SheetNum = SheetNum + 1 

Loop 


End Sub 

我只是觉得应该扩大的这个答案,所以你从中学到东西并可以发展你的VBA技巧:

Do While Sheets("Sheet1").Range("A1") <> "" 这开始loop与CON该loop将在片材1运行,直到范围dition是Empty

Sheets.Add.Name = "Sheet" & SheetNum添加新的片材与片材数目

X = Sheets("Sheet1").Range("A1").Offset(256, 0).Address 

Sheets("Sheet1").Range("A1:" & X).Copy 

Sheets("Sheet" & SheetNum).Range("A1").PasteSpecial 

Sheets("Sheet1").Rows("1:256").Delete 

X被设置为地址,然后复制,新创建的片材然后粘贴到复制的单元格中。然后删除原始单元格。

SheetNum = SheetNum + 1在到达loop命令之前将纸张编号递增1,并继续循环直到设置标准。