如果name等于另一个表中的string,则将值1加1

我正在尝试做一些清单。 所以当我在第二张纸上添加一个特定产品的名称时,它会将该产品的E行第一张纸上的库存加1。 这个名字放在第二张表中,而不是像VBA代码里试过的那样只有一个名字。

在完成清单后,我应该可以清除表单2并保存值。 当我尝试这个,它会给出一个错误,我只是不知道如何让它工作,让它遍历整个列表。

Private Sub CommandButton1_Click() Dim x As Integer x = Sheets("Sheet1").Cells(1, "E").Value For Each cell In Sheets(Sheet1).Range("A:A") If cell.Value = Sheets("Sheets2").Cells(1, "A").Value Then x = x + 1 End If Next cell End Sub 

您认为x表示单元格,但是它是一个内存variables,以Sheet1中的E1值开始。

如果你想增加范围,那么把variables设置为一个范围,并将其设置为所需的范围,或者一起跳过:

 Private Sub CommandButton1_Click() Dim cell as Range With Worksheets("Sheet1") For Each cell In Intersect(.Range("A:A"),.UsedRange) .Range("E1").value = .Range("E1").value + Application.WorksheetFunction.COUNTIF(Worksheets("Sheet2").Range("A:A"),cell.Value) Next cell End With End Sub 

尝试这个:

 Private Sub CommandButton1_Click2() Dim x As Integer Dim lastRow As Long Dim cell as Range x = Sheets("Sheet1").Range("E1").Value lastRow = Range("A" & Rows.Count).End(xlUp).Row ' assuming Col. A has most data For Each cell In Sheets("Sheet1").Range("A1:A" & lastRow) If cell.Value = Sheets("Sheets2").Range("A1").Value Then x = x + 1 End If Next cell Debug.Print "x is now " & x ' Put the new value in E1 Sheets("Sheet1").Range("E1").Value = x End Sub 

我没有做太多,只是缩短了范围,所以你不会遍历所有的列A.添加Dim cell as Range ,并在For循环启动Sheet1周围。 (这是错误来自那条线)。 您可以执行Sheet1.Range()Sheets("Sheet1").Range ,但不是Sheets(Sheet1).Range没有额外的编码/奇怪的variables设置。