如果单元格值与上部单元格值相同

时间:2019-02-06 04:31:24

标签: excel vba

我试图在日常工作中使用宏,但是由于我的excel文件中包含太多项,因此我无法使用IF作为公式,因此解决方案是将公式转换为VBA代码。

我需要帮助将以下公式转换为excel中的VBA代码: = IF(J2 <> J1,AD2-X2,AE1-X2)。

3 个答案:

答案 0 :(得分:1)

这是您问题的答案。但是,它仅限于使用OP信息。另外,如果计算时间过长,则应尝试将计算设置为“手动”(“公式”->“计算选项”->“手动”)。

Option Explicit

Public Sub RunIF()
    Dim vntOut As Variant
    Dim rngSame As Range

    With ActiveSheet

        Set rngSave = .Range("X2")

        If (LCase(Trim(.Range("J2").Value)) <> LCase(Trim(.Range("J1").Value))) Then
            vntOut = .Range("AD2").Value - rngSave.Value
        Else
            vntOut = .Range("AE1").Value - rngSave.Value
        End If

        .Range("AE2").value = vntOut

        Set rngSave = Nothing
    End With

End Sub

这是您的代码转换为使用列J:

Private Sub CommandButton12_Click()
    Dim x As Long
    Dim LastRow As Long
    Dim i as long 

    With Sheets("Shipping Schedule")
        LastRow = .Cells(.Rows.Count, "J").End(xlUp).Row

        For i = 2 to LastRow

            set r = .Range("J" & I)
        'For Each r In .Range("J2:J" & LastRow)
            If LCase(Trim(r.Value)) <> LCase(Trim(r.Offset(-1, 0).Value)) Then
                'ae2 =                      "AD2"             -   "x2"
                r.Offset(0, 21).Value = r.Offset(0, 20).Value - r.Offset(0, 14).Value
            Else
                'ae2 =                      "AE1"         -        "x2"
                r.Offset(0, 21).Value = r.Offset(-1, 21).Value - r.Offset(0, 14).Value
            End If

            set r = nothing 

        Next i
    End With
End Sub

但是,您应该增加I而不是每个值,因为单元格取决于上一行,并且excel可能不会像您希望的那样遍历范围。

答案 1 :(得分:0)

Private Sub CommandButton12_Click()

    Dim x As Long

    Dim LastRow As Long 

    Sheets("Shipping Schedule").Select


    With Sheets("Shipping Schedule")

        LastRow = .Cells(.Rows.Count, "N").End(xlUp).Row

        For Each r In .Range("N2:N" & LastRow)

            If r.Value <> "" Then

                r.Offset(0, 19).Value = ………………………………….              

            End if      

        Next r      

    End With

End Sub

答案 2 :(得分:0)

Excel公式转换为VBA:填充列

any(Callback::class)