VBA Excel – 按特定间隔删除行

我是这个论坛的新手,请耐心等待。

我有一个CSV文件,我需要应用一些VBA模块来获取我需要的信息。

总之,我有3个macros一起到以下内容:

  1. 每20行创build一个新行
  2. 从上面的单元格(列A)中取出数字,并用此数字填充新行中的空格。
  3. 从新行之前的20行中求和H列中的数字以获得总分。 只要新行出现(每隔20行),随后就会完成此操作。

是否有可能获得这三个macros在一个单一的macros? 这样可以更轻松地将这些macros传递给可能需要使用这些macros的其他人。

当前代码:

' Step 1 Sub Insert20_v2() Dim rng As Range Set rng = Range("H2") While rng.Value <> "" rng.Offset(20).Resize(1).EntireRow.Insert Set rng = rng.Offset(21) Wend End Sub ' Step 2 Sub FillBlanks() Columns("A:A").Select Selection.SpecialCells(xlCellTypeBlanks).Select Selection.FormulaR1C1 = "=R[-1]C" End Sub ' Step 3 Sub AutoSum() Const SourceRange = "H" Dim NumRange As Range, formulaCell As Range Dim SumAddr As String Dim c As Long For Each NumRange In Columns(SourceRange).SpecialCells(xlConstants, xlNumbers).Areas SumAddr = NumRange.Address(False, False) Set formulaCell = NumRange.Offset(NumRange.Count, 0).Resize(1, 1) formulaCell.Formula = "=SUM(" & SumAddr & ")" 'change formatting to your liking: formulaCell.Font.Bold = True formulaCell.Font.Color = RGB(255, 0, 0) c = NumRange.Count Next NumRange End Sub 

感谢您的任何帮助。 最好,

黑尔格

那应该不是那么难。

 Public Sub main() 'deklaration Dim rng As Range Const SourceRange = "H" Dim NumRange As Range, formulaCell As Range Dim SumAddr As String Dim c As Long 'Loop trough all Rows Set rng = Range("H2") While rng.Value <> "" rng.Offset(20).Resize(1).EntireRow.Insert Set rng = rng.Offset(21) Wend 'Fill the Blank Rows in A Columns("A:A").Select Selection.SpecialCells(xlCellTypeBlanks).Select Selection.FormulaR1C1 = "=R[-1]C" For Each NumRange In Columns(SourceRange).SpecialCells(xlConstants, xlNumbers).Areas SumAddr = NumRange.Address(False, False) Set formulaCell = NumRange.Offset(NumRange.Count, 0).Resize(1, 1) formulaCell.Formula = "=SUM(" & SumAddr & ")" 'change formatting to your liking: formulaCell.Font.Bold = True formulaCell.Font.Color = RGB(255, 0, 0) c = NumRange.Count Next NumRange End Sub 

您可以创build一个调用您创build的所有其他潜艇的Sub

例:

 Sub DoAllTasks() Insert20_v2 FillBlanks AutoSum End Sub 

然后,您只需创build一个button,并将DoAllTasks分配给它或直接运行macros。

HTH;)