2016-03-29 13 views
0

TL; DR唯一の問題は、蓄積するセルの値が必要なことです。おそらく説明は必要ありませんが、読めば状況を把握できます。VBAを使用してExcelでセルの値を累積します

この特別なシナリオに関しては、私は検索して何も見つかりませんでした。 私はこのエクセルシートhttp://i.imgur.com/kDNvwL3.pngを最初の列/行インデックスを書き出しています。 (混乱を避けるために不要なものを削除しました)

コードが混乱するかもしれませんが、コードを確認できる間にコードを実行するかのようにコードの仕組みを説明します。問題は最後に述べられます。

だから、最初のコード:

コードが実行されると、それは、Cell A41から始まる:

ws1.Activate 
    Dim BLIrows As Integer, A As Range 
    Dim newRow As Integer 


    For BLIrows = 41 To 52 
    For newRow = 14 To 30 
     With ws1 
     If .Cells(BLIrows, 1).Value > 1 Then      'Make sure to only do this for non empty cells 
      Dim x As Long             '(they will be longer than 1 char) 
      Dim y As String 
      Dim element As Variant 
      For Each element In .Cells(BLIrows, 1) 
      y = .Cells(BLIrows, 1).Value        'Save it's value for the search in the EFG14 list 
      If y = .Cells(newRow, 5).Value Then     'The search in the EFG14 list 
       x = .Cells(newRow, 4).Value       'Save the number when found an identical value 
                        '<-- MISSING CODE/PROBLEM 
       If y = .Cells(BLIrows, 1).Value Then    'Make sure to put the number in the correct row 
        .Cells(BLIrows, 5).Value = x      'Putting the number 
       End If 
      End If 
      Next element 
     End If 
     If Not .Cells(BLIrows, 5).Value > 0 Then 'If anything (like Auto-pilot site) isn't in the EFG14 column 
     .Cells(BLIrows, 5).Value = 0     'then give it a 0 
     End If 
     End With 
    Next 
    Next 

そして、ここではそれがテキストで書かれて働いている方法です。それは最初の「P4250」ですが、この列の最初の部分ですが、「P33-0236」に焦点を当てる予定です。これはEFG14リストに1回しか表示されないためです(理由は後で理解できます)。そのため、コードはCell A44で "P33-0236"を検出します。その値が得られたら、EFG14の列で検索します。あなたが疑うように、それはEFG21セルで同じ値であることがわかります。コードは、同じ行であるが異なる列に書き込まれた番号を保存します。この場合、セルD21です。 D21の数値では、整数値(明らかに "P33-0236")を検索した値のA40列(開始位置)を検索し、A44で数値を検索します。これは、数値を同じにする必要があるためですこの場合はA44に対して列は異なるが列は異なる。そこで、A44で "P33-0236"を見つけ、同じ行の別の列に移動します(E44)。ここでは、D列にある整数値を貼り付けます。

これは基本的に私のvbaコードの試運転を説明しています。

PROBLEM

問題が整数値をコストカラム(E40)にコピーされるときに値を蓄積しないことです。たとえば、コードがP4250で実行される場合、EFG14列で「P4250」が3回検出されます。値はそれと等価です。実際には28440 + 47400 + 47400 = 123240になりますが、最終的に "P4250"が見つかったので47400しかありません。

タイトルが示唆するように、私は同じ "P"数字の値をコスト欄に入れるときに追加したいと思います。

コードがどのように書かれているかに焦点を当てないでください。重要なのは累積コードのみです。

+1

あなたはSUMIFを使用することができます。

は、おそらくこのようなものは(あなたが値を添加する場所これは仮定して)? –

答えて

2

値に現在の値と新しく見つかった値の合計を加算する場合は、新しい値をセルに割り当てる前にコードを追加する必要があります。

今のところ、新しい値をセルに割り当てるだけのようです。

.Cells(BLIrows, 5).Value = .Cells(BLIrows, 5).Value + x 
+0

くそー!どのように私は何かがとてもシンプルに逃したことができますか?大きな感謝、それは必要に応じて動作します。 –

関連する問題