Sub ControlInsertProduct() Dim Wb As Workbook Dim OneSht As Worksheet Dim Arr As Variant Dim i As Long Arr = Array("农家香菜籽油(20L)", "万家炊大豆油(20L)", "万家炊原香菜籽油(20L)", "压榨菜籽油(20L)") Set Wb = Application.ThisWorkbook For Each OneSht In Wb.Worksheets If IsNumeric(OneSht.Name) Or OneSht.Name = "月销量" Then For i = LBound(Arr) To UBound(Arr) InsertNewProduct OneSht, Arr(i) Next i End If Next OneSht Set Wb = Nothing Set OneSht = Nothing End Sub Sub InsertNewProduct(ByVal Sht As Worksheet, ByVal ProductName As String) Dim InsertCol&, EndCol&, EndRow& '插入列和结束列 Dim CopyStart, CopyEnd '复制的起始列 Dim OrgRng As Range With Sht EndCol = .Cells.Find("*", .Cells(1, 1), xlValues, xlWhole, xlByColumns, xlPrevious).Column EndRow = .Cells.Find("*", .Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).Row InsertCol = EndCol - 2 CopyStart = EndCol - 5 CopyEnd = EndCol - 3 Set OrgRng = .Range(.Cells(2, CopyStart), .Cells(EndRow, CopyEnd)) OrgRng.Copy .Cells(2, InsertCol).Insert xlShiftToRight, xlFormatFromLeftOrAbove .Cells(2, InsertCol).Value = ProductName '修改公式 EndCol = EndCol + 3 For i = 4 To EndRow - 2 If Not .Cells(i, EndCol - 2).Formula Like "*SUM*" Then Formula = "=" For j = 4 To EndCol - 3 Step 3 Formula = Formula & "+" & .Cells(i, j).Address Next j Formula = Replace(Formula, "+", "", , 1) .Cells(i, EndCol - 2).Value = Formula End If If Not .Cells(i, EndCol - 1).Formula Like "*SUM*" Then Formula = "=" For j = 5 To EndCol - 3 Step 3 Formula = Formula & "+" & .Cells(i, j).Address Next j Formula = Replace(Formula, "+", "", , 1) .Cells(i, EndCol - 1).Value = Formula End If If Not .Cells(i, EndCol - 0).Formula Like "*SUM*" Then Formula = "=" For j = 6 To EndCol - 3 Step 3 Formula = Formula & "+" & .Cells(i, j).Address Next j Formula = Replace(Formula, "+", "", , 1) .Cells(i, EndCol - 0).Value = Formula End If Next i End With Set OrgRng = Nothing End Sub