Yes I meant the same. If there is code in your file then it will work like that.
The error occoured because in place of (0-19 | 20-29 ....and so on) in diameter you change the criteria to Min and Max
Please paste below code and press F5: and Save File as Xlsm File only
Code:Sub CalculatePrice() Dim rngCell As Range Dim rngCellC As Range Dim rngCellR As Range Dim rngWholeC As Range Dim rngWholeR As Range Dim rngWholeRow As Range Dim rngWhole As Range Dim rngQuality As Range Dim lngCol As Long Dim lngRow As Long Dim sngPrice As Single With ThisWorkbook.Worksheets("HJD-sono") Set rngWholeC = .Range(.Range("C3"), .Cells(3, .Columns.Count).End(xlToLeft)) Set rngWholeR = .Range("A4:A" & .Range("A" & .Rows.Count).End(xlUp).Row) End With With ThisWorkbook.Worksheets("XXX") Set rngWhole = .Range("A2:A" & .Range("A" & .Rows.Count).End(xlUp).Row) For Each rngCell In rngWhole 'Finding Column For Each rngCellC In rngWholeC On Error GoTo X1: If rngCell.Value >= rngCellC.Value And rngCell.Value <= rngCellC.Offset(1).Value Then X1: lngCol = rngCellC.Column Exit For End If Next rngCellC 'Finding Quality Set rngWholeRow = Nothing For Each rngQuality In rngWholeR If rngQuality.Value = rngCell.Offset(, 2).Value Then If rngWholeRow Is Nothing Then Set rngWholeRow = rngQuality Else Set rngWholeRow = Union(rngWholeRow, rngQuality) End If End If Next 'Finding Row Set rngWholeRow = rngWholeRow.Offset(, 1) For Each rngCellR In rngWholeRow On Error GoTo X2: If rngCell.Offset(, 1).Value >= rngCellR.Value And rngCell.Offset(, 1).Value <= rngCellR.Offset(, 1).Value Then X2: lngRow = rngCellR.Row Exit For End If Next rngCellR 'Finding Price With ThisWorkbook.Worksheets("HJD-sono") sngPrice = .Cells(lngRow, lngCol).Value End With 'Calculating Exact Price If rngCell.Offset(, 3).Value = "a" Then rngCell.Offset(, 4) = sngPrice + (sngPrice * 0.1) ElseIf rngCell.Offset(, 3).Value = "b" Then rngCell.Offset(, 4) = sngPrice + (sngPrice * 0.075) ElseIf rngCell.Offset(, 3).Value = "c" Then rngCell.Offset(, 4) = sngPrice + (sngPrice * 0.05) ElseIf rngCell.Offset(, 3).Value = "d" Then rngCell.Offset(, 4) = sngPrice + (sngPrice * 0.025) ElseIf rngCell.Offset(, 3).Value = "e" Then rngCell.Offset(, 4) = sngPrice End If Next rngCell End With End Sub


Reply With Quote
Bookmarks