如何使用vba命令删除某个值?

时间:2019-01-05 05:20:22

标签: excel vba excel-vba

我正在尝试编写一个函数,该函数会自动删除给定单元格选择的最小值。我知道如何找到最小值,但是我不知道如何删除该最小值。

这就是我所拥有的。

Function MinDel(Stuff)

MinDel = Application.Worksheetfunction.min(stuff)

End Function

如何删除MinDel值?

3 个答案:

答案 0 :(得分:1)

您可以像这样从here修改功能

Option Explicit

Function AddressOfMax(rng As Range) As Range
    Set AddressOfMax = rng.Cells(WorksheetFunction.Match(WorksheetFunction.Max(rng), rng, 0))
End Function

Function AddressOfMin(rng As Range) As Range
    Set AddressOfMin = rng.Cells(WorksheetFunction.Match(WorksheetFunction.Min(rng), rng, 0))
End Function

Sub TestIt()
Dim rg As Range
Dim rgMin As Range

    Set rg = ActiveSheet.Range("A1:A6")
    Set rgMin = AddressOfMin(rg)
    rgMin.Clear

End Sub

答案 1 :(得分:1)

如注释中所述,默认情况下,UDF(用户定义函数)无法在Excel中更改值或范围,应使用Sub。这是删除Selection中最小值的方法:

Public Sub DeleteMinimum()

    Dim myRange As Range
    Dim minValue As Double
    Dim myMin As Range        
    If Not TypeOf Selection Is Excel.Range Then Exit Sub
    Dim valueAssigned As Boolean: valueAssigned = False
    minValue = 0

    For Each myRange In Selection
        If IsNumeric(myRange) Then
            If Not valueAssigned Then
                valueAssigned = True
                minValue = myRange
                Set myMin = myRange
            Else
                If myRange < minValue Then
                    minValue = myRange
                    Set myMin = myRange
                End If
            End If
        End If
    Next myRange

    If Not myMin Is Nothing Then
        myMin = "DELETED!"
    End If

End Sub

答案 2 :(得分:0)

如果所选内容包含多个单元格,则以下过程将删除所选内容中的最小值。它会忽略除选择内容以外的所有内容。

Sub DelMin()
    ' 05 Jan 2019

    Dim Arr As Variant, i As Integer
    Dim Mm As Variant, m As Integer

    With Selection
        If .Cells.Count > 1 Then
            Arr = .Value
            For i = 1 To UBound(Arr)
                If Not IsEmpty(Arr(i, 1)) Then
                    If IsEmpty(Mm) Or (Arr(i, 1) < Mm) Then
                        Mm = Arr(i, 1)
                        m = i
                    End If
                End If
            Next i
            .Cells(m, 1).ClearContents
        End If
    End With End Sub