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"数字の値をコスト欄に入れるときに追加したいと思います。
コードがどのように書かれているかに焦点を当てないでください。重要なのは累積コードのみです。
あなたはSUMIFを使用することができます。
は、おそらくこのようなものは(あなたが値を添加する場所これは仮定して)? –