excelvba中的动态逻辑

excelvba中的动态逻辑,excel,vba,Excel,Vba,我有一个excel工作簿,里面有30个工作表。每张纸看起来都像这样 现在我想在“i”列之后插入一列(新列将是J),值应该是这样的 对于试样2.000(4-7行),新列J中的值应为=i4-i5(对于所有J4,5,6,7) 对于每个优惠券,应重复此操作。 我尝试录制宏,但没有帮助。 请提供me示例逻辑以动态处理此问题。 提前谢谢。根据您的描述,听起来这就是您要找的。如果不是这样,请告诉我 Sub AddNewColumn() Dim sColumnToIns, sCouponField,

我有一个excel工作簿,里面有30个工作表。每张纸看起来都像这样

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

对于试样2.000(4-7行),新列J中的值应为=i4-i5(对于所有J4,5,6,7) 对于每个优惠券,应重复此操作。 我尝试录制宏,但没有帮助。 请提供me示例逻辑以动态处理此问题。
提前谢谢。

根据您的描述,听起来这就是您要找的。如果不是这样,请告诉我

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
Sub AddNewColumn()
Dim sColumnToIns、sCouponField、sCouponGroup、_
sFormula,第1节,第2节,sMarketValueField,sColumnToInsHeader,sTopCellOfData
Dim rData作为范围
暗rRng As范围
变暗rCell As范围
将oSh设置为工作表
'确保更改图纸以反映
'工作表的对象名称。
设置oSh=2
sColumnToIns=“J”
sColumnToInsHeader=“新列”
sCouponField=“B”
sMarketValueField=“I”
sTopCellOfData=“A4”
'插入新列
表1.范围(sColumnToIns&“:”&sColumnToIns)。向右插入XLSHIFTTOT
'获取已使用范围内的最低单元格
Set rRng=oSh.UsedRange.Cells(oSh.UsedRange.Rows.Count,oSh.UsedRange.Columns.Count)
设置rData=oSh.范围(STOPCELOFDATA,rRng)
'设置标题文本
rData.Range(sColumnToIns和“1”).Offset(-1)。值=sColumnToInsHeader
'检查整个数据集。当“息票”中的价值
列更改后,放入一个公式减去最高市值
从下一个市场价值开始下跌。
sCouponGroup=“”
对于rData.Columns(sCouponField.Cells)中的每个rCell
如果为rCell.Value,则
sCouponGroup=rCell.Value
sCell1=rCell.EntireRow.Columns(sMarketValueField).Address
sCell2=rCell.EntireRow.Columns(sMarketValueField).Offset(1).Address
sFormula=“=”&sCell1&“-”&sCell2
如果结束
rCell.EntireRow.Columns(sColumnToIns).Formula=sFormula
下一个
端接头

您有代码吗?您的图片没有显示。@TIM….对不起….不知道我做错了什么,所以图像没有弹出….我将再次尝试重新加载..检查并让我知道它是否可见谢谢晶体管..您已经做了一半….但是给了我一个很好的示例…我随时都会尝试!如果你需要更多的帮助,请告诉我。