版本检查VBA(excel)代码(redhat)

时间:2013-01-11 07:06:42

标签: excel vba excel-vba

enter image description here

这是我将使用的事情的例子。

在左侧是将使用NAME BASE REVISE检查包的版本的补丁。

您可以将此处的脚本转换为VBA代码吗?我将研究它并融入我的实际工作中:

if (Patch name = Pack name) then   **** searching for same Name on patch column to reference for patch base and revise number    
       if (base(c column) > base(h column)) ***checknumber[cellbycell] 

           display "yes" in J cell

             or if (base(C column) = base(h column)) then

                    check if revise(D column) > revise(I column)

                      display "yes" in J cell
    else display No

所以,如果你能给我示例代码;如果你有时间,请向我解释每行代码的意义。

3 个答案:

答案 0 :(得分:1)

这个

你不需要vba
=IF($A2=$G2,IF($C2>$H2,"Yes",IF($C2=$H2,IF($D2>$I2,"Yes","No"),"No")),"No")

第J栏

答案 1 :(得分:1)

这样的事情应该有效:

Option Explicit

Sub variousconditions()

Dim i As Integer, x As Integer
x = 0
For i = 2 To 10
    With Excel.ThisWorkbook.ActiveSheet
        If .Cells(i, 1) = .Cells(i, 7) Then '****searching for same Name on patch
            Select Case .Cells(i, 3) '***checknumber[cellbycell]
                    Case Is > .Cells(i, 8)
                            .Cells(i, 10) = "yes"
                    Case Is = .Cells(i, 8)
                            If .Cells(i, 4) > .Cells(i, 9) Then
                                .Cells(i, 10) = "yes"
                            End If
                End Select
        End If
    End With
Next i

End Sub

我必须重新讨论Siddharth的参考,因为它会告诉您需要保存此代码的位置等。http://msdn.microsoft.com/en-us/library/office/ee814737%28v=office.14%29.aspx

答案 2 :(得分:1)

这是一个比较两个点符号版本号的功能,您需要将其粘贴到VBA编辑器中的新模块中。

Option Explicit

Public Function VersionCompare(CurrentVersion As Range, _
                               TargetVersion As Range)

    Dim result As Integer
    result = CompareDotStrings(CurrentVersion.Cells(1, 1).Value, _
                               TargetVersion.Cells(1, 1).Value)

    If result = 1 Then
        VersionCompare = True
    Else
        VersionCompare = False
    End If
End Function

Private Function CompareDotStrings(LeftValue As String, _
                                  RightValue As String) _
                                  As Integer

    Dim CompareLeft() As String, CompareRight() As String, CompareLength As Integer

    CompareLeft = Split(LeftValue, ".")
    CompareRight = Split(RightValue, ".")
    CompareLength = UBound(CompareLeft)
    If UBound(CompareRight) < CompareLength Then CompareLength = UBound(CompareRight)

    Dim ElementLeft As Integer, ElementRight As Integer, Comparison As Integer
    Dim ElementNumber As Integer

    For ElementNumber = 0 To CompareLength
        ElementLeft = CInt(CompareLeft(ElementNumber))
        ElementRight = CInt(CompareRight(ElementNumber))
        Comparison = ElementRight - ElementLeft
        If Comparison <> 0 Then
            CompareDotStrings = Sgn(Comparison)
            Exit Function
        End If
    Next ElementNumber
    CompareDotStrings = 0
End Function

使用此功能,您可以使用=VersionCompare(H2, C2)比较两个版本号,您可以使用工作表中的公式完成您想要执行的所有操作(例如拆分虚线版本)。