If you're not averse to using a helper column and an array, a formula could be utilized to filter the unique values values automatically in ascending order in a separate column.
Then with the application of INDIRECT to create a dynamic range, you wouldn't have to worry about manipulating your data source.
MAX would identify the row with the last consecutive nonblank cell, MATCH would pull back that row #, and INDIRECT would let you create ranges for the formula from G3 to GXXX and the final version would look something like:
Bookmarks