我有一张看起来像这样的表,但更复杂:
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
列中添加和减去值。为了保持这个工作库存尽可能准确而不是基于变量,我想每天重置B列。这样,如果计数稍微关闭,我不必重置所有内容。
我一直在研究这个问题,我知道有一个更好的方法可以做到这一点,而不是我尝试过的五个并且失败了。它需要基于列,但我的工作表有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愿意显示。我知道如何解决这个或任何不同方式的想法吗?
答案 0 :(得分:1)
复制并粘贴值 - 使用特殊粘贴 - 从C列到B列。
但是C列的值显然会发生变化 - 因为Eistein和因果或类似的东西。
答案 1 :(得分:1)
看起来你应该使用D列并将其称为Display Count,或类似的东西。在D栏中使用此公式:
=IF(C18="n/a", 0, C18)
如果他们混淆了你的老板,你可以隐藏B和C列。
答案 2 :(得分:0)
在工作簿打开事件中尝试此宏。我希望它可以解决你的问题:
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