2017-06-28 175 views
0

我正在尝试创建一个新列,将多个值合并到一个列中。下面的代码在我需要的地方创建一个新列没有问题。VBA - 添加新列,然后COPY单元格,然后SUM单元格

但是,在每个新创建的列中,我希望我的代码将同一行中的前5个单元求和。它目前工作,但是是静态的(新的列在下面的例子中是G,它总和B:F)。我想我需要一些内置的Offset函数来允许它总和的范围是动态的(前5列),因为它遍历整个工作表。

此外,我很喜欢它将行1-9行中的标题信息从新列的左侧复制到新列中,并将单词“Combo”放入新列的第10行。

Office 2013

任何帮助这个努力都会很好。 由于

Dim currentColumn As Integer 
Dim columnHeading As String 

For currentColumn = Sheets("SLTData").UsedRange.Columns.Count To 2 Step -1 

columnHeading = Sheets("SLTData").UsedRange.Cells(10, currentColumn).Value 

'CHECK WHETHER TO KEEP THE COLUMN 
Select Case columnHeading 
    Case "PD.G0100", "PD.G0500", "PD.G0800", "PD.G0900", "PD.G1000", "PD.G0300", "PD.G0400", "PD.G0150", "PD.G0600" 
     'Do nothing 
    Case Else 

     If InStr(1, _ 
      Sheets("SLTData").UsedRange.Cells(10, currentColumn).Value, _ 
      "Homer", vbBinaryCompare) = 0 Then 


      Sheets("SLTData").Columns(currentColumn).Insert 
       For i = 11 To Cells(Rows.Count, "B").End(xlUp).Row 
       Range("G" & i) = WorksheetFunction.Sum(Range("B" & i), Range("C" & i), Range("D" & i), Range("E" & i), Range("F" & i)) 
       Next i 
     End If 
End Select 
Next 
+0

当'currentColumn'为'2'时,是否还想将它的左边的五列(即列“A”,列“0”,列'-A',列'-B'和列'-C',其中只有列'A'将是有效的)?并且请注意,代码中的'Range','Cells'和'Rows'指的是'ActiveSheet',它可能是或可能不是'Sheets(“SLTData”)'。 (你应该总是限定对“范围”,“细胞”,“行”等的引用) – YowE3K

回答

1

代替Range("G" & i)使用Cells(row, column)(行和列是整数)。总结其剩余的5个单元格:Cells(row, column) = WorksheetFunction.Sum(Range(Cells(row, column-5), Cells(row, column-1)))

+0

真棒!谢谢! – nikedude

相关问题