2011-08-18 157 views
0

我有一个有30个工作表的Excel工作簿。每个工作表看起来是这样的Excel中的动态逻辑Vba

enter image description here

现在我想后“我”栏目(新列会十)插入一列和值应该是这样的

对于优惠券的一些事情2.000(4-7行)新列J中的值应为= i4-i5(对于所有J4,5,6,7) 这应该针对每个优惠券重复。 我试图录制宏,但没有帮助。 请提供me采样逻辑来动态处理。 预先感谢您。

+0

你有任何代码吗?你的照片不显示。 –

+0

@TIM ....我很抱歉....不知道我做错了什么,以便图像没有弹出....我会尝试重新加载它..check n让我知道它是否可见 –

回答

2

从您的描述中,它听起来像这就是你正在寻找的。如果不是这样,请让我知道。

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 
+0

谢谢晶体管.....你是一半的方式....但给了我一个很好的示例...我会尝试这个 –

+0

任何时间!如果您需要更多帮助,请告诉我。 – transistor1