2017-06-28 122 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

相關問題