I have two fields that describe a points placement on a line. Each point has a unique ID, and a field describing the next ID "downstream". My goal is to compare a third field (field3) where the unique ID = the downstream ID.
The downstream (DownstreamID) value of the third field (Field3_2) should be less than the third field (Field3_1) of the upstream (UniqueID) feature.
I also included a section of visual basic code for performing a similar function in excel.
For (Each Feature)
if UniqeID /*(from feature1)*/ = DownstreamID /*(from feature2)*/ & Field3_1 /*(from feature1)*/ > Field3_2 /*(from feature2)*/:
return(1)
else:
return(0)
__________________________________________________________________________________________________
If NextDownID <> -1 Then
NextDownRow = Application.Match(Cells(rw, 2), Columns(1), 0)
For i = 0 To 7 'create array with US Flows
If Cells(rw, USColumn + i).Value <> "" Then 'check if flow value exists
tmpUS(i) = Cells(rw, USColumn + i).Value 'if yes, add to array
Else
tmpUS(i) = 0 'else, put in 0 (null causes issues)
End If
Next i
For j = 0 To 7 'create array with DS Flows
tmpq = Application.Index(Columns(3 + j), NextDownRow)
If tmpq <> "" Then
tmpDS(j) = tmpq
Else
tmpDS(j) = 0
End If
Next j
For k = 0 To 7
tmpcmp(k) = tmpDS(k) - tmpUS(k) 'tmpCmp will be negative if US flows are > DS flows (i.e. flows are not increasing in the DS direction)
If tmpcmp(k) < 0 Then
Worksheets(outputsheet).Cells(outrw, 1).Value = NextDownID 'creates a row in the output sheet for the NextDownID. Only occurs if a DS flow need sto be replaced
NextDownNEW = Application.VLookup(NextDownID, Worksheets(inputsheet).Range("A:B"), 2, False) 'Determines the NextDownID associated with the Output Sheet HydroID i.e. InputSheet HydroID's NextDownID's NextDownID
Worksheets(outputsheet).Cells(outrw, 2).Value = NextDownNEW 'Prints NextDownNEW. Useful for iterating macro
Worksheets(outputsheet).Cells(outrw, k + 3).Value = tmpUS(k) 'Prints flows that need to be revised
FailCount = FailCount + 1
Else
End If
Next k
Else
End If
If Sheets(outputsheet).Cells(outrw, 1).Value <> 0 Then
outrw = outrw + 1 'If the Loop printed a HydroID, add 1 to outrow so on the next iteration the macro prints to the next row
Else
End If
rw = rw + 1
Loop