1

我想在 excel 中创建一个宏,让我在按下命令按钮时增加零件的计数。

目前,我的概念是使用 vlookup 使用以下内容获取该部分的现有计数。但是,它不会增加单元格中的实际计数值,这正是我想要的。我怀疑它的 cos vlookup 仅用于在单元格内返回一个值,但在实际增量的过程中未激活单元格。有人可以告诉我如何纠正它吗?我还是 vba 的新手。谢谢!!!:)

例如,Vlookup 在 Sheets("Location") 的单元格 A5 中找到 C1value。它会自动将单元格 C5 中的值加 1。

Sub FindAddTools()

Dim C1Qnty As Double

C1value = Sheets("Issue").Range("D11")

Sheets("Location").Activate

C1Qnty = WorksheetFunction.VLookup(C1value, Range("A:D"), 3, False)

C1Qnty = C1Qnty + 1

End Sub

附加:对我原来的问题的附加。我想知道是否可以对整个范围做同样的事情?

例如,C1value 现在是 Sheets("Issue").Range("D11:D20") 的范围。我想在 Sheets("Location") 中找到此范围内的所有值,并在 C 列中增加它们的相应计数。

有没有办法做到这一点,而无需对范围内的所有单元格重复相同的过程?谢谢!:)

4

2 回答 2

0

根据您的评论,我认为应该这样做。

注意:您不必使用Activate工作表来执行引用其单元格/范围的功能。

Sub FindAddTools()
Dim shIssue as WOrksheet: Set shIssue = Sheets("Issue")
Dim shLoc as Worksheet: Set shLoc = Sheets("Location")
Dim allC1Values as Range
Dim C1Value as Variant 
Dim C1Qnty As Double
Dim foundRow as Long


Set allC1Values = shIssue.Range("D11:D100") '## Modify as needed.
For each C1Value in allC1Values.Cells

    C1Qnty = WorksheetFunction.VLookup(C1value, shLoc.Range("A:D"), 3, False)
    C1Qnty = C1Qnty + 1

    foundRow = WorksheetFunction.Match(c1Value,shLoc.Range("A:A"),False)
    shLoc.Range("C" & foundRow).Value = CqQnty
Next
End Sub

小心这个。您立即使用该VLOOKUP函数写入您刚刚“找到”的同一个单元格,因此,显然如果您再次运行此宏,您将再次增加它。但是,这可能是所需的功能,如果是这样,没问题。

注意:如果在or函数C1Value找到,则不会出现错误捕获。VLOOKUPMATCH

于 2013-06-28T03:30:05.863 回答
0

这是我的镜头。如果值不匹配,则不会发生任何事情:

Sub FindAddTools()
Dim RangeToMatch As Excel.Range
Dim cell As Excel.Range
Dim C1Value As Variant
Dim C1Row As Variant

Set RangeToMatch = Sheets("Issue").Range("D2:D11")
For Each cell In RangeToMatch
    C1Value = cell.Value
    With Sheets("Location")
        C1Row = Application.Match(C1Value, .Range("A:A"), 0)
        If Not IsError(C1Row) Then
            .Range("C" & C1Row).Value = .Range("C" & C1Row).Value + 1
        End If
    End With
Next cell
End Sub

我对其进行了编辑,使其循环通过一系列单元格进行匹配。该范围设置为D2:D11以上。

于 2013-06-28T03:39:23.910 回答