Excel公式,用于从列中删除零并与其他列表进行比较

时间:2013-02-27 14:27:17

标签: excel ms-office excel-formula

我正在尝试应用Excel公式来对excel列进行排序,但却无法提供它。

excel条目如下所示:

enter image description here

如您所见,在第一列中,记录最后有000个。

1)我需要忽略A栏中的最后一个000,比较A栏和B栏的内容。

   a) If it matches, then remove the 000 from the Column A.

   b) If it does not matches, then delete the entire row OR make the content for both the column as N/A.

请帮我解决这个问题,这个excel的内容很庞大,因此手动完成是不可行的:(

谢谢,

2 个答案:

答案 0 :(得分:1)

如果第一列始终是数字且始终有3个零,则只需除以1000并进行比较。

如果没有,则转换为字符串并输入第一个(长度为-3)字符并与第二列的字符串结果进行比较

答案 1 :(得分:1)

如果您希望使用VBA执行此操作,可以将以下宏添加到工作簿中:

修改

您的评论指出您正在寻找前导和尾随零,而不仅仅是原始问题建议的尾随。如果是这种情况,您可以通过一个简单的条件语句来完成此操作,该条件语句检查3个零的位置(如果有的话)。

如果可能,Format单元Number type删除前导零会更简单。如果那是不可能的,那么这就是实现这一目标的宏:

Public Sub CompareValues()
    Dim rowCount As Integer, currentRow As Integer
    Dim firstCellValue As String
    Dim secondValValue As String
    rowCount = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
    Dim test As String
    For currentRow = rowCount To 1 Step -1

        'remove three leading or trailing 0's from value
        test = Left(Cells(currentRow, 1).Value, 3)
        If Left(Cells(currentRow, 1).Value, 3) = "000" Then
            firstCellValue = Right(Cells(currentRow, 1).Value, Len(Cells(currentRow, 1).Value) - 3)
        Else
            firstCellValue = Left(Cells(currentRow, 1).Value, Len(Cells(currentRow, 1).Value) - 3)
        End If

        secondValValue = Cells(currentRow, 2).Value

        If Not IsEmpty(firstCellValue) And Not firstCellValue = "" Then
            If firstCellValue = secondValValue Then
                Cells(currentRow, 1).Value = secondValValue
            Else
                Cells(currentRow, 1).EntireRow.Delete
            End If
        End If
    Next
End Sub

在宏之前

enter image description here

宏观后

enter image description here