为了构建这些结果,我需要做什么?

时间:2014-03-08 13:32:01

标签: excel vba excel-vba

我正在尝试学习VBA,但它与我习惯的编程类型非常不同。因此,我将非常感谢您的指导。

我想构建从模拟中得到的结果。下面有屏幕截图,说明我在这里用文字描述的内容:

我想做的是:

  1. 将所有结果从一个工作表复制到一个新工作表(以保留原始数据)。
  2. 删除某些列,例如B & D:E
  3. 在行30:38之外移动(或复制,无关紧要)行11:19,其间有一列空列。结果如下图所示。 (每个块中的行数不同,有4个块)。
  4. 我不知道这些是否是推荐的程序,但我知道我可以:

    删除列 this way

    Sub sbDeleteAColumnMulti()
    Columns("D").Delete
    End Sub
    

    复制/粘贴范围 like this

    Sub copyRangeOver()
    
    Dim i As Integer
    i = 6
    
    Dim copyRange  As Range
    Set copyRange = ThisWorkbook.Worksheets("Sheet2").Range("A" & i + 1 & ":CA" & i + 1)
    
    Dim countD As Integer
    countD = 10
    copyRange.Copy Destination:=Cells(countD, 2)
    
    End Sub  
    
    • 让我感到困惑的一些事情:标题(第一个除外):Bus ( A ) -LL Fault,向右移动一列(它们现在高于Ik'',而不是{{1 }})。
    • 我事先并不知道每个“块”中有多少行,因此我需要检查一下(但我知道只有4个“块”)。所有“块”都是相同的大小,所以我可以检查两个Bus Name之间的行数。

    现在,我不希望有人给我写一个代码!我希望有人能帮助我的是建议我可以遵循的程序来实现这个目的。我知道有很多道路通往罗马,我看到这个问题可能是“基于意见的主要问题”或“过于宽泛”。但是,我认为这是属于这里的合法问题。我不是要开始讨论“最好”的做法是什么,我只是想找到一种有效的方法,因为我目前不知道从哪里开始。如果它更健壮,更清洁,我不会害怕“复杂的方式”。

    我不知道的是我需要什么样的Bus NameModules(如果有的话)等等。我是否需要收藏,创建Class Modules / Public潜艇?在这种情况下,每个人的目的是什么?

    我的开始:(编辑:没有合并任何单元格,它只是一堆空格)

    enter image description here

    我想要的是什么:

    enter image description here

    更新

    这是录制宏时我得到的第一块代码(注意我的工作簿比我给出的示例中的列和行更多):

    Private

    对我来说,这看起来像一块垃圾。当然,有可能我应该以不同的方式创建宏,但如果我以正确的方式做到了,我认为它不会起作用。我想我可以删除所有Range("D:I,K:M,O:P").Select Range("O1").Activate Selection.Delete Shift:=xlToLeft ActiveWindow.SmallScroll Down:=39 Range("C52:E78").Select Selection.Copy ActiveWindow.SmallScroll Down:=-42 Range("G13").Select ActiveSheet.Paste ActiveWindow.SmallScroll Down:=84 Range("C91:E117").Select - 行,但仍然......

    另外,我没有看到我如何调整它,因此如果每个块中有不同的行数,它将起作用。

1 个答案:

答案 0 :(得分:2)

要实现这一点,您将首先要使用Excel中的Macro Recorder

如果您每次都为完全相同的数据输出执行完全相同的格式化选项,那么这是您最好的选择。录像机将复制您为格式化所做的任何事情并编写您需要的代码。它可能不是最佳代码,但它将是您所描述内容的最佳选项

如果(何时?)你需要开始添加除了相同格式之外的逻辑,那么你将拥有能够让你的生活更轻松的功能代码。


但是宏录制器不会生成错误的代码和/或最好只是从头开始编码吗?

我在这方面经验丰富并且经常使用宏录制器,因为......虽然它确实在那里放了很多代码,但严格来说并不是必需的,它会让你获得大量更加模糊的东西(如何我是否按照这种方式格式化单元格边框?)等当然最好不仅使用刻录机,而且对于您的示例它更完美,您可以记录所有格式,然后可以修改逻辑而不必浪费时间搞清楚格式化,删除列等的语法。

很少有语言能够基本上说“我想以编程方式做我现在正在做的事情 - 我该如何开始?” VBA的做法。您可以在学习时绕过许多烦人的语法问题(特别是如果您之前已经完成了任何类型的编码),并专注于您想要添加的逻辑。老实说,它很好用。

相关问题