使用VBA根据列B的值重置列A中的值

我有一张看起来像这样的表格,但方式更复杂:

Product count real count Rake Complete -1 n/a Rake Head 2 =B3+B2 Rake Handle 2 =B4+B2 Bike Complete -5 n/a Bike Handle 10 =B6+B5 Bike Wheel 25 =B7+B5+B5 Bike Frame 90 =B8+B5+B6 

公式工作,看起来像这样:

 Product count real count Rake Complete -1 n/a Rake Head 2 1 Rake Handle 2 1 Bike Complete -5 n/a Bike Handle 10 5 Bike Wheel 25 15 Bike Frame 90 85 

我将不胜感激帮助VBA代码,将列B的值重置为C列的值是这样的:

 Product count real count Rake Complete 0 n/a Rake Head 1 1 Rake Handle 1 1 Bike Complete 0 n/a Bike Handle 5 5 Bike Wheel 15 15 Bike Frame 85 85 

我有其他的VBA代码,我把它们放在其他工作表上,从count列中的值加减。 为了保持这个工作清单尽可能准确,而不是基于variables,我想重新设置列B每天。 这样,如果计数稍微减less,我不必重置所有的东西。

我一直在做这个工作一段时间,我知道有一个更好的方法来做到这一点,而不是我曾经尝试失败的五个。 它需要列为基础,虽然,我的工作表有465行,这需要适用于和企业成长,这张表上的行。

最接近我的代码是这样的:

 Sub CommandButton1_Click() Columns("C:C").Select Selection.Copy Columns("B:B").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Dim r As Long For r = Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1 If Cells(r, 2) = "n/a" Then Cells(r, 2).value = 0 Next r End Sub 

我遇到的主要问题是每次运行代码的时候,我的一些其他产品的计数。 如果你看自行车车架,你可以单独出售,但你也可以自行车把手。 当这个代码重置它总是添加自行车手柄。 如果我运行10次没有变化,我的库存增长得更高,然后Excel愿意显示。 任何想法如何我可以解决这个或任何一个不同的方式在一起的想法?

复制并粘贴值 – 使用特殊粘贴 – 从列C到列B.

但是,那么C列的价值就会明显改变 – 因为Eistein和因果关系或者类似的东西。

它看起来像你应该使用D列,并称之为显示计数,或类似的东西。 在列D中使用此公式:

 =IF(C18="n/a", 0, C18) 

如果他们混淆了你的老板,你可以隐藏B和C列。

显示计数列

在工作簿打开事件中尝试此macros。 我希望它可以解决你的问题:

 Dim realcount() As Variant Dim x As Single Private Sub Workbook_Open() On Error Resume Next: x = Sheet1.Cells(2, 3).End(xlDown).Rows ReDim realcount(x) For i = 2 To x realcount(i) = Sheet1.Cells(i, 3).Value Sheet1.Cells(i, 2).Value = realcount(i) If Sheet1.Cells(i, 3).Value = "n/a" Then Sheet1.Cells(i, 2).Value = 0 End If Next End Sub