我想在excel中创建一个宏,只要按下命令按钮,就可以增加部件的数量。
目前,我的概念是使用vlookup使用以下内容获取该部分的现有计数。但是,它不会增加单元格中的实际计数值,这正是我想要的。我怀疑它的cos vlookup仅用于返回单元格中的值,但在实际增量的过程中未激活单元格。有人可以建议我如何纠正它?我还是vba的新手。谢谢!!! :)
E.g。 Vlookup在Sheets的单元格A5(“位置”)中找到C1value。它会自动将Cell 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
ADD ON:原始问题的附加内容。我想知道是否有可能在整个范围内做同样的事情?
E.g。 C1value现在是一系列表格(“问题”)。范围(“D11:D20”)。我想在Sheets(“Location”)中找到此范围内的所有值,并在C列中增加相应的计数。
有没有办法在不对范围内的所有单元格重复相同的过程的情况下执行此操作? 谢谢! :)
答案 0 :(得分: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
函数立即写入您刚刚“找到”的同一个单元格,因此,显然如果再次运行此宏,您将再次递增它。但是,这可能是所需的功能,如果是这样,没问题。
注意:如果在C1Value
或VLOOKUP
函数中找到MATCH
不,则不会出现错误陷阱。
答案 1 :(得分: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
以上。