Edit: actually @Sam_w I'm not sure I understand your lookups. If end column is the same as starting column, then all your cells are in the same column, fine, starting at row 15 and reading downwards, but then you say "end row contains "Xaxis" in column A" which doesn't make sense. Got an example file?
Use index(match()) to find the indices for startCol and endRow?
endCol = startCol
ActiveSheet.Range(Cells(startCol, 15), Cells(endCol, endRow)).Select
Edit: actually @Sam_w I'm not sure I understand your lookups. If end column is the same as starting column, then all your cells are in the same column, fine, starting at row 15 and reading downwards, but then you say "end row contains "Xaxis" in column A" which doesn't make sense. Got an example file?