Select Actual Used Range in Excel Sheet

Select Actual Used Range in Excel Sheet

It’s easy to select the current range in Excel – just press Ctrl + A. That shortcut selects all the cells in the block that surround the active cell. The selection stops at the first blank row and blank column. But how can you select actual used range in Excel sheet?

Select Current Range

In this example, cell A1 was active, and range A1:A2 was selected with the keyboard shortcut.

selectusedrange01

Select All Cells

If you use the Ctrl + A shortcut while an isolated or empty cell is selected, then the entire worksheet is selected. In the screen shot below, cell E2 was active when the shortcut was used. The entire sheet was selected.

selectusedrange02

If the Ctrl + A shortcut selects a range, you can press Ctrl + A again, to select the entire sheet. In the screen shot below, cell A1 was active, and by pressing Ctrl + A twice, the entire worksheet is selected.

selectusedrange03

Select Filled Cells Only

To select only the filled cells on a worksheet, you can use the Find dialog box.

  1. On the Excel Ribbon’s Home tab, click Find & Select, then click Find (or use the keyboard shortcut — Ctrl+F)
  2. Type an asterisk (*) in the “Find what” field
  3. Click the “Find All” button
  4. Press Ctrl+A to select all the ranges in the list
    • selectusedrange04
  5. Click Close

Only the filled cells on the worksheet are selected.
selectusedrange05

Select the Used Range

To select all the cells in the used range on a worksheet, you can use the following shortcut sequence:

  1. Press Ctrl + Home, to select cell A1
  2. Press Ctrl + Shift + End, to select all cells from A1 to the last used cell.

selectusedrange06

Select the Actual Used Range

As you can see in the screen shot above, there is nothing visible in cell D8, but it is included in the selected used range. Perhaps there was a value in that cell, and it was deleted, or the cell is formatted.

If you want to select only the cells in the actual used range, you can use this macro instead. The macro was written by Rick Rothstein, and looks for the last cell with a value, and ends the selection there.

Note: This code ignores cells with formulas that are displaying the empty string. If you need to identify formula cells that might be displaying the empty string, then change the xlValues argument to xlFormulas.

Sub PickedActualUsedRange()
  Range("A1").Resize(Cells.Find(What:="*", SearchOrder:=xlRows, _
      SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _
      Cells.Find(What:="*", SearchOrder:=xlByColumns, _
      SearchDirection:=xlPrevious, LookIn:=xlValues).Column).Select
End Sub

After running the PickedActualUsedRange macro, the selection ends at cell D7, instead of D8.

selectusedrange07

Select from First Cell With Data

[Thanks to Jelle-Jeroen Lamkamp for his comment that the first used cell might not be A1. Here is Rick’s code to deal with that situation.]
Usually, selecting from cell A1 won’t hurt anything, but if you really want the actual used range on the worksheet, then you would need to use a macro like this one…

Sub SelectActualUsedRange()
  Dim FirstCell As Range, LastCell As Range
  Set LastCell = Cells(Cells.Find(What:="*", SearchOrder:=xlRows, _
      SearchDirection:=xlPrevious, LookIn:=xlValues).Row, _
      Cells.Find(What:="*", SearchOrder:=xlByColumns, _
      SearchDirection:=xlPrevious, LookIn:=xlValues).Column)
  Set FirstCell = Cells(Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlRows, _
      SearchDirection:=xlNext, LookIn:=xlValues).Row, _
      Cells.Find(What:="*", After:=LastCell, SearchOrder:=xlByColumns, _
      SearchDirection:=xlNext, LookIn:=xlValues).Column)
  Range(FirstCell, LastCell).Select
End Sub

More Worksheet Code Examples

You can find this sample code, and a other examples, on Rick Rothstein’s Excel VBA – Worksheet page, on the Contextures website.
________________

30 thoughts on “Select Actual Used Range in Excel Sheet”

  1. I’m not sure why you wouldn’t use something simple to select the used range on a worksheet, like:
    ActiveSheet.UsedRange.Select
    or if you want to get fancy:
    Sub SelectUsedRange()
    Dim rng As Range
    Set rng = Range(“A1”).SpecialCells(xlCellTypeLastCell)
    Range(Cells(1, 1), rng).Select
    End Sub

  2. @Gregory,
    I am guessing you did not read the entire thread as this was covered elsewhere. Very quickly… go to a blank sheet and select cell A1, then press and hold the CTRL key while pressing some other key (say, for example, J10). Okay, you should have two cells selected… change their Fill Color to, say White, and then change it Immediately back to No Fill. Okay, what is the UsedRange. Looking at the sheet, you might say “nothing”. Type this line of code into the Immediate Window and execute it…
    ? ActiveSheet.UsedRange.Address, Cells.SpecialCells(xlCellTypeLastCell).Address
    Does the print out match your expectations? There are other ways to get UsedRange or SpecialCells’ xlCellTypeLastCell (which uses the UsedRange, by the way) to return an incorrect range… the method I proposed does not suffer from this defect.

  3. My apologies. I was commenting on the used range, not the actual used range as defined by having some value in a cell, which can be a vexing problem at times. Your code works wonders if there is an actual value in the range.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.