I am having some trouble with the grabbing of values from a chart it is grabbing the wrong values and if seats = 3 or 4 prints out nothing. I get no error when the code runs and I am changing column values but running in circles trying to figure out why it is not pulling the correct values.
The code is checking the values from input data seen below (sample input data image) and running the select cases to determine which value the input data matches for specific criteria then outputs a value from a specific cell in the chart.
The problem I am having now is that the values are not printing correctly for example:
Input data line 2 Eqp 767, Si 0400, Seat 2, Legs 2. So if Seat = 2 then it checks for the number of legs, then checks where the Si values fall into a range of time 0400-0459.
If evalCell.Value = 2 Then
Select Case evalCell.Offset(0, 1).Value
Case 1
' Get the offset column in column F
chartColumn = b
Select Case evalCell.Offset(0, -2).Value
' Column e = 2, c >= 0, c <= 359
Case 0 To 359
chartRow = 5
' Column e = 2, c >= 400, c <=459
Case 400 To 459
chartRow = 6
The output should be 1400 which is in cell C6 on the chart but it outputs 1600.
Table C is used if seat is 3 or 4. Then breaks down to Columns B & C are 777 and 767, D & E 330 and 787, and G & F are not used by this macro.
Public Sub MonthCalc()
' Define objects
Dim sourceSheet As Worksheet
Dim chartSheet As Worksheet
Dim evalCell As Range
' Define other variables
Dim lastRow As Long
Dim chartColumn As Long
Dim chartRow As Long
Set sourceSheet = ThisWorkbook.Sheets("FLT Data")
Set chartSheet = ThisWorkbook.Sheets("FAR117Chart")
lastRow = sourceSheet.Range("E2").End(xlDown).Row
For Each evalCell In Range("E2:E" & lastRow).Cells
If evalCell.Value = 2 Then
Select Case evalCell.Offset(0, 1).Value
Case 1
' Get the offset column in column F
chartColumn = b
Select Case evalCell.Offset(0, -2).Value
' Column e = 2, c >= 0, c <= 359
Case 0 To 359
chartRow = 5
' Column e = 2, c >= 400, c <=459
Case 400 To 459
chartRow = 6
' Column e = 2, c >= 500, c <=559
Case 500 To 559
chartRow = 7
' Column e = 2, c >= 600, c <=659
Case 600 To 659
chartRow = 8
' Column e = 2, c >= 700, c <=1159
Case 700 To 1159
chartRow = 9
' Column e = 2, c >= 1200, c <=1259
Case 1200 To 1259
chartRow = 10
' Column e = 2, c >= 1300, c <=1659
Case 1300 To 1659
chartRow = 11
' Column e = 2, c >= 1700, c <=2159
Case 1700 To 2159
chartRow = 12
' Column e = 2, c >= 2200, c <=2259
Case 2200 To 2259
chartRow = 13
' Column e = 2, c >= 2300, c <=2359
Case 2300 To 2359
chartRow = 14
End Select
Case 2
' Get the offset column in column F
chartColumn = evalCell.Offset(0, 1).Value - 1
Select Case evalCell.Offset(0, -2).Value
' Column e = 2, c >= 0, c <= 359
Case 0 To 359
chartRow = 5
' Column e = 2, c >= 400, c <=459
Case 400 To 459
chartRow = 6
' Column e = 2, c >= 500, c <=559
Case 500 To 559
chartRow = 7
' Column e = 2, c >= 600, c <=659
Case 600 To 659
chartRow = 8
' Column e = 2, c >= 700, c <=1159
Case 700 To 1159
chartRow = 9
' Column e = 2, c >= 1200, c <=1259
Case 1200 To 1259
chartRow = 10
' Column e = 2, c >= 1300, c <=1659
Case 1300 To 1659
chartRow = 11
' Column e = 2, c >= 1700, c <=2159
Case 1700 To 2159
chartRow = 12
' Column e = 2, c >= 2200, c <=2259
Case 2200 To 2259
chartRow = 13
' Column e = 2, c >= 2300, c <=2359
Case 2300 To 2359
chartRow = 14
End Select
Case 3
' Get the offset column in column F
chartColumn = evalCell.Offset(0, 1).Value - 1
Select Case evalCell.Offset(0, -2).Value
' Column e = 2, c >= 0, c <= 359
Case 0 To 359
chartRow = 5
' Column e = 2, c >= 400, c <=459
Case 400 To 459
chartRow = 6
' Column e = 2, c >= 500, c <=559
Case 500 To 559
chartRow = 7
' Column e = 2, c >= 600, c <=659
Case 600 To 659
chartRow = 8
' Column e = 2, c >= 700, c <=1159
Case 700 To 1159
chartRow = 9
' Column e = 2, c >= 1200, c <=1259
Case 1200 To 1259
chartRow = 10
' Column e = 2, c >= 1300, c <=1659
Case 1300 To 1659
chartRow = 11
' Column e = 2, c >= 1700, c <=2159
Case 1700 To 2159
chartRow = 12
' Column e = 2, c >= 2200, c <=2259
Case 2200 To 2259
chartRow = 13
' Column e = 2, c >= 2300, c <=2359
Case 2300 To 2359
chartRow = 14
End Select
Case 4
' Get the offset column in column F
chartColumn = evalCell.Offset(0, 1).Value - 1
Select Case evalCell.Offset(0, -2).Value
' Column e = 2, c >= 0, c <= 359
Case 0 To 359
chartRow = 5
' Column e = 2, c >= 400, c <=459
Case 400 To 459
chartRow = 6
' Column e = 2, c >= 500, c <=559
Case 500 To 559
chartRow = 7
' Column e = 2, c >= 600, c <=659
Case 600 To 659
chartRow = 8
' Column e = 2, c >= 700, c <=1159
Case 700 To 1159
chartRow = 9
' Column e = 2, c >= 1200, c <=1259
Case 1200 To 1259
chartRow = 10
' Column e = 2, c >= 1300, c <=1659
Case 1300 To 1659
chartRow = 11
' Column e = 2, c >= 1700, c <=2159
Case 1700 To 2159
chartRow = 12
' Column e = 2, c >= 2200, c <=2259
Case 2200 To 2259
chartRow = 13
' Column e = 2, c >= 2300, c <=2359
Case 2300 To 2359
chartRow = 14
End Select
Case 5
' Get the offset column in column F
chartColumn = evalCell.Offset(0, 1).Value - 1
Select Case evalCell.Offset(0, -2).Value
' Column e = 2, c >= 0, c <= 359
Case 0 To 359
chartRow = 5
' Column e = 2, c >= 400, c <=459
Case 400 To 459
chartRow = 6
' Column e = 2, c >= 500, c <=559
Case 500 To 559
chartRow = 7
' Column e = 2, c >= 600, c <=659
Case 600 To 659
chartRow = 8
' Column e = 2, c >= 700, c <=1159
Case 700 To 1159
chartRow = 9
' Column e = 2, c >= 1200, c <=1259
Case 1200 To 1259
chartRow = 10
' Column e = 2, c >= 1300, c <=1659
Case 1300 To 1659
chartRow = 11
' Column e = 2, c >= 1700, c <=2159
Case 1700 To 2159
chartRow = 12
' Column e = 2, c >= 2200, c <=2259
Case 2200 To 2259
chartRow = 13
' Column e = 2, c >= 2300, c <=2359
Case 2300 To 2359
chartRow = 14
End Select
Case 6
' Get the offset column in column F
chartColumn = evalCell.Offset(0, 1).Value - 1
Select Case evalCell.Offset(0, -2).Value
' Column e = 2, c >= 0, c <= 359
Case 0 To 359
chartRow = 5
' Column e = 2, c >= 400, c <=459
Case 400 To 459
chartRow = 6
' Column e = 2, c >= 500, c <=559
Case 500 To 559
chartRow = 7
' Column e = 2, c >= 600, c <=659
Case 600 To 659
chartRow = 8
' Column e = 2, c >= 700, c <=1159
Case 700 To 1159
chartRow = 9
' Column e = 2, c >= 1200, c <=1259
Case 1200 To 1259
chartRow = 10
' Column e = 2, c >= 1300, c <=1659
Case 1300 To 1659
chartRow = 11
' Column e = 2, c >= 1700, c <=2159
Case 1700 To 2159
chartRow = 12
' Column e = 2, c >= 2200, c <=2259
Case 2200 To 2259
chartRow = 13
' Column e = 2, c >= 2300, c <=2359
Case 2300 To 2359
chartRow = 14
End Select
Case 7
' Get the offset column in column F
chartColumn = evalCell.Offset(0, 1).Value - 1
Select Case evalCell.Offset(0, -2).Value
' Column e = 2, c >= 0, c <= 359
Case 0 To 359
chartRow = 5
' Column e = 2, c >= 400, c <=459
Case 400 To 459
chartRow = 6
' Column e = 2, c >= 500, c <=559
Case 500 To 559
chartRow = 7
' Column e = 2, c >= 600, c <=659
Case 600 To 659
chartRow = 8
' Column e = 2, c >= 700, c <=1159
Case 700 To 1159
chartRow = 9
' Column e = 2, c >= 1200, c <=1259
Case 1200 To 1259
chartRow = 10
' Column e = 2, c >= 1300, c <=1659
Case 1300 To 1659
chartRow = 11
' Column e = 2, c >= 1700, c <=2159
Case 1700 To 2159
chartRow = 12
' Column e = 2, c >= 2200, c <=2259
Case 2200 To 2259
chartRow = 13
' Column e = 2, c >= 2300, c <=2359
Case 2300 To 2359
chartRow = 14
End Select
End Select
ElseIf evalCell.Value = 3 Then
' Column e = 3, b >= 330, b <=767
If evalCell.Offset(0, -3).Value >= 330 Or evalCell.Offset(0, -3).Value <= 767 Then
' Get the offset column in column D
chartColumn = 2
Select Case True
Case 0 To 559
chartRow = 18
Case 600 To 659
chartRow = 19
Case 700 To 1259
chartRow = 20
Case 1300 To 1659
chartRow = 21
Case 1700 To 2359
chartRow = 22
End Select
' Column e = 3, b >= 777, b <=787
ElseIf evalCell.Offset(0, -3).Value >= 777 Or evalCell.Offset(0, -3).Value <= 787 Then
' Get the offset column in column D
chartColumn = 0
Select Case True
Case 0 To 559
chartRow = 18
Case 600 To 659
chartRow = 19
Case 700 To 1259
chartRow = 20
Case 1300 To 1659
chartRow = 21
Case 1700 To 2359
chartRow = 22
End Select
End If
ElseIf evalCell.Value = 4 Then
' Add conditionals
' Column e = 3, b >= 330, b <=767
If evalCell.Offset(0, -3).Value >= 330 Or evalCell.Offset(0, -3).Value <= 767 Then
' Get the offset column in column D
chartColumn = 2
Select Case True
Case 0 To 559
chartRow = 18
Case 600 To 659
chartRow = 19
Case 700 To 1259
chartRow = 20
Case 1300 To 1659
chartRow = 21
Case 1700 To 2359
chartRow = 22
End Select
' Column e = 3, b >= 777, b <=787
ElseIf evalCell.Offset(0, -3).Value >= 777 Or evalCell.Offset(0, -3).Value <= 787 Then
' Get the offset column in column D
chartColumn = 0
Select Case True
Case 0 To 559
chartRow = 18
Case 600 To 659
chartRow = 19
Case 700 To 1259
chartRow = 20
Case 1300 To 1659
chartRow = 21
Case 1700 To 2359
chartRow = 22
End Select
End If
End If
'Cell G in the same line
evalCell.Offset(0, 2).Value = chartSheet.Range("B5").Offset(chartRow, chartColumn).Value
Next evalCell
End Sub