0

私はこのようなシートを持っていますが、もっと複雑です:

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

次のように、列 B の値を列 C の値にリセットする VBA コードのヘルプをいただければ幸いです。

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 を毎日リセットしたいと思います。そうすれば、カウントが少しずれていても、すべてをリセットする必要はありません。

私はしばらくこれに取り組んできましたが、私が試して失敗した5つの方法よりも良い方法があることを知っています. ただし、列ベースである必要があります。私のシートには、これを適用する必要がある 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 が喜んで表示します。これを修正する方法、または別の方法のアイデアをまとめて修正する方法はありますか?

4

3 に答える 3

1

列 D を使用して Display Count などと呼ぶ必要があるようです。列 D で次の式を使用します。

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

上司を混乱させる場合は、列 B と C を非表示にすることができます。

カウント列の表示

于 2012-08-20T01:06:05.900 に答える
1

列 C から列 B に値をコピーして貼り付けます (特殊な貼り付けを使用)。

しかし、列 C の値は明らかに変化します。なぜなら、エイシュタインと原因と結果またはそのようなものだからです。

于 2012-08-17T18:15:46.557 に答える
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
于 2012-08-20T07:21:23.863 に答える