如果有数据,则对单元格执行计算

时间:2013-12-18 19:05:37

标签: excel excel-vba excel-2010 vba

我对excel中的宏有点新意,我试图找到一种方法来调整我目前在excel文件中的一个宏。我的计算采用了DE列,然后从D中减去E,并将其添加到列B的值中。这是当前代码以及正在使用的工作表。

Sub InvAdj()
'
' InvAdj Macro
'
' Keyboard Shortcut: Ctrl+Shift+I
'
    Columns("C:C").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "Quality"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "=RC[-1]-RC[2]+RC[3]"
    Range("C2").Select
    Selection.AutoFill Destination:=Range("C2:C33")
    Range("C2:C33").Select
    Columns("C:C").Select
    Selection.Copy
    Columns("B:B").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=True, Transpose:=False
    Columns("C:C").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    Range("D2:E33").Select
    Selection.ClearContents
    Range("F1").Select
End Sub

1 个答案:

答案 0 :(得分:0)

不确定这是不是你在尝试?

Sub InvAdj()
    Dim ws As Worksheet

    '~~> Change this to the relevant sheet
    Set ws = ThisWorkbook.Sheets("Sheet1")

    With ws
        .Range("B1").Value = "Quality"

        For i = 2 To 33
            '~~> Check if all cells have data
            If Len(Trim(.Range("B" & i).Value)) <> 0 And _
            en(Trim(.Range("D" & i).Value)) <> 0 And _
            en(Trim(.Range("E" & i).Value)) <> 0 Then
                'B = B + (E - D)
                .Range("B" & i).Value = .Range("B" & i).Value + _
                                        (.Range("E" & i).Value - .Range("D" & i).Value)
            End If
        Next i
    End With
End Sub