Комплекс для каждого цикла - PullRequest
0 голосов
/ 08 октября 2018

Итак, у меня есть большой набор данных с ценами на готовую продукцию, а затем с ценами на товары, которые составляют готовую продукцию.Я пытаюсь написать код на VBA, который позволил бы мне сравнить цену готового товара с общим количеством предметов, составляющих готовый товар.Единственная проблема заключается в том, что в готовых товарах содержится разное количество предметов, поэтому их сложно захватить, поскольку они не всегда находятся на одинаковом количестве рядов друг от друга.Итак, у меня вопрос, есть ли способ сделать два идентификатора рядом с числами, а затем код взять числа рядом с ним и сравнить.Ниже приведена лишь пара готовых товаров и их предметов.Я думал, что мог бы написать a для каждого цикла, поэтому, если я сделаю идентификаторы, он может зациклить процесс сравнения.Я только начал изучать VBA и так далее, так что если у кого-то из вас есть идея, как это сделать, это будет очень цениться.Спасибо!

W0003662    1537244 1           DUCTWORK 42148 14X8 VOLUME DAM  $4.25   $0.00 
            1648481 1   5X7 POLY BAG-4ML. 1/4 HANG HOL          $0.09   $0.09 
            1653390 1   PP WINDSOR HDL -LG - SMOKE ONL          $3.00   $0.00 
            44135   1   CPVC RED TEE 3/4X3/4X1/2" CTS           $0.72   $0.00 
                        TRC 
    Total Rep   Cost........    .......:                        $3.82


W0000312    1642273 1           PACKING WASHER ASST / 10266 $0.21   $0.21 
            1642263 1   501 SOLUTION PACKING / 10253        $0.05   $0.05 
            1642264 1   502 SOLUTION PACKING / 10254        $0.05   $0.07 
            1642265 1   503 SOLUTION PACKING / 10255        $0.05   $0.05 
            1642266 1   504 SOLUTION PACKING / 10256        $0.05   $0.05 
            1648471 1   3X4 POLY BAG-4ML. 1/4 HANG HOL      $0.01   $0.01 
                        _________   
    Total Rep   Cost........    .......:                    $0.21   


W0000316    1642329 1           ISE CONNECTION CLAMP & FLEX CO  $3.84   $3.84 
            1648475 1   4X6 POLY BAG 4ML.SEAL TOP 1/4           $0.02   $0.02 
            1652000 1   ISE CONNECTION CLAMP / ISE7470          $0.61   $0.61 
            1652001 1   INSINKERATOR FLEX COUPLING / I          $3.21   $3.21 
                        _________   
    Total Rep   Cost........    .......:                        $3.84   

W0002538    1642335 1           WHIRLAWAY DISP.SPLASH GUARD /   $0.57   $0.57 
            1648475 1   4X6 POLY BAG 4ML.SEAL TOP 1/4           $0.02   $0.02 
            1642336 1   WHIRLAWAY DISP.SPLASH GUARD X           $0.55   $0.55 
                        _________   
    Total Rep   Cost........    .......:                        $0.57   

Код VBA:

Sub CompareWipCost()
Dim TRC As Range
Dim test_wip As Worksheet
Set test_wip = ActiveSheet
Set TRC = Selection

For Each TRC In test_wip

    If TRC.Offset(1, 0).Value = 3.815 Then
        With Selection.Interior
            .Color = 65535
        End With
    Else
        With Selection.Interior
            .Pattern = xlNone
        End With
    End If
Next
End Sub

1 Ответ

0 голосов
/ 09 октября 2018

Просто ужасная мысль (поменяйте "sheet2", чтобы отразить название вашего листа)

Dim r As Variant

Sub main()
  r = Sheets("sheet2").UsedRange                         'capture data into array r
    For i = LBound(r) To UBound(r)                       'loop through array
      If InStr(r(i, 1), "W000") > 0 Then                 'signal start of first data set
        For j = i + 1 To UBound(r)                       'loop until "total rep" is found
          If InStr(r(j, 1), "Total Rep") > 0 Then        
            For k = i To j
              'do something awesome with the data here
              Debug.Print r(k, 1)
            Next k
          ElseIf InStr(r(j, 1), "W000") Then Exit For    'exit on next loop
          End If
        Next j
      End If
    Next i

End Sub
...