Excel中的dynamic逻辑Vba

我有一个有30个工作表的Excel工作簿。 每张表看起来像这样

在这里输入图像说明

现在我想在“I”列(新的列将是J)之后插入一列,值应该是这样的

对于优惠券2.000(4-7行),新列J中的值应该是= i4-i5(对于所有J4,5,6,7)对于每个优惠券应该重复。 我试图录制macros,但没有帮助。 请提供示例逻辑来dynamic处理这个问题。 先谢谢你。

从你的描述来看,这听起来就像你在找什么。 请让我知道如果不是这样的话。

Sub AddNewColumn() Dim sColumnToIns, sCouponField, sCouponGroup, _ sFormula, sCell1, sCell2, sMarketValueField, sColumnToInsHeader, sTopCellOfData Dim rData As Range Dim rRng As Range Dim rCell As Range Dim oSh As Worksheet 'Make sure you change the sheet to reflect 'the object name of your sheet. Set oSh = Sheet2 sColumnToIns = "J" sColumnToInsHeader = "New Column" sCouponField = "B" sMarketValueField = "I" sTopCellOfData = "A4" 'Insert a new column Sheet1.Range(sColumnToIns & ":" & sColumnToIns).Insert xlShiftToRight 'Get lowest cell in used range Set rRng = oSh.UsedRange.Cells(oSh.UsedRange.Rows.Count, oSh.UsedRange.Columns.Count) Set rData = oSh.Range(sTopCellOfData, rRng) 'Set the header text rData.Range(sColumnToIns & "1").Offset(-1).Value = sColumnToInsHeader 'Go through the entire data set. Whenever the value in the 'Coupon' 'column changes, put a formula the subtracts the top market value 'from the next market value down. sCouponGroup = "" For Each rCell In rData.Columns(sCouponField).Cells If sCouponGroup <> rCell.Value Then sCouponGroup = rCell.Value sCell1 = rCell.EntireRow.Columns(sMarketValueField).Address sCell2 = rCell.EntireRow.Columns(sMarketValueField).Offset(1).Address sFormula = "=" & sCell1 & "-" & sCell2 End If rCell.EntireRow.Columns(sColumnToIns).Formula = sFormula Next End Sub