I'm looking for a keyboard shortcut that will duplicate the functionality available by double-clicking the "handle" in the bottom-right corner of a cell. Is there something that can do this, without third-party software or creating custom macros?
I provide you with two methods to accomplish what you want. Unfortunately, both methods do have their own caveats, since Excel does not provide an all-in-one keyboard shortcut for auto-fill. I highly suggest you try both methods and then determine which works best for you. Outside of these two methods, I do not believe you can accomplish what you seek without the use of macros or add-in modules. Should you go the macro route, the
AutoFill method on any
Range object should be all that you need.
Method 1 (alternate, but it works with no mouse interaction)
Another way to accomplish this is to use a combination of the fill-down shortcut and the select all in range. After you enter the data in the cell, press Ctrl+Shift+End to select from the current cell to the end of the range that would be auto-filled. Then, press Ctrl+D to "fill down" into the entire range from the top cell.
Method 2 (my preferred way, one-time mouse interaction)
Once you fill in the cell you want to auto-fill downwards, double-click the bottom right corner as usual. To repeat the "auto-fill down" step, so long as you only enter data and press enter, you can repeat it by pressing Ctrl+Y.
This means that you do need to use the mouse, but only the first time. All subsequent work can be done purely with the keyboard, so long as you only use it to enter data (i.e. you don't use the context menu button to modify anything).
Note that the first method does come with a minor caveat - your view/cursor will move to the bottom of the spreadsheet (which does not happen with the Ctrl+Y method). You can press the Home key to move the cursor back up quickly.
I'm also curious about a shorter keybind for the Autofill Handle. But this also works:
Key Sequence for Fill Series
Select the entire range you wish to extend the series, including the blank cells and the "seed" (the cell that contains the initial value on which the autofill series will be based).
Press ALT >> H >> F >> I >> S >> Alt + F >> Enter.
To create/edit your custom lists, press Alt + F, go to Popular then click on Edit custom lists. The custom lists serve as bases for how the Autofill Handle populates cells.
These key combinations only work for the English language of Excel. If you use Excel in any other language, search for the corresponding key combination for your language in: Home ribbon > Fill (in the Editing ribbon section) > Series.... In the dialog box select AutoFill and hit Enter. The fill down key combination may also differ (Ctrl+ D).
- Select the range you want the data to be filled including the first line/ cell where data is available to the last line/ cell where data ends.
- Press Ctrl + G (go to)
- Go to Specials and select "Blanks" from the options available. Press OK.
- In the cell you are currently in (having selected the blank cells in the rage) enter the formula referring to previous cell "= + up arrow" (Say if you are in cell A3, type =A2) and press Ctrl + Enter.
- Convert the above formula into values by making copy & paste selecting the entire range again.
So far, my best solution was to:
CTRL-C of source cell
CTRL-G (go to) enter last cell in a column
SHIFT-ENTER (highlights that whole section)
ENTER (pastes values in all cells)
Works with Excel 2007 / 2013 / 365
A shorter pre-2010 keyboard shortcut to bring up the Series (Windows) dialog box mentioned in @Ellesa's answer is:
ALT, E, I, S
It's only shorter by one keystroke but still an extra stroke nonetheless.
For what it is worth on the Mac I use Keyboard Maestro to execute a series of key commands for this so I don't have to use the mouse.
The sequence is:
- Down Arrow (these two commands allows copy to work properly)
- Up Arrow
- Left Arrow (change to right arrow to reference to right)
- Command+Shift+down arrow
- Option+Tab (change to option+shift+tab if you referenced to the right in step 4)
It is nearly instant and in most cases does the same thing as if you double clicked on the right lower portion of the cell you wanted to copy down. The only difference that I am aware being that if you are on a column that has nothing to the left right then takes priority of what it is filling down with.
That advantage here with these commands you can make two shortcuts and choose which side it is filling down referencing from.
You could also just copy, highlight, and paste after you enter in a formula. This method allowed me to just use keyboard, no mouse clicks.
Although it may just be quicker to double click. Depends on preference.
For example, I am doing a VLOOKUP. and the first lookup value is in cell B2. 1. I entered the formula in A2. 2. Then I copied cell A2 (Ctrl+c) 3. Then starting in A3, I highlighted the range I wanted to populate the formula in (Ctrl+Shift+Down) or (Shift+Down) 4. Then I pasted (ctrl+v)
When I did this the formula in cell A3 had the lookup value at B3, A5 had B5, etc. You may want to do a spot check to make sure the formulas adjust the first time you do that.
Assuming there is data in an adjacent column, I like to do the following (assume the other column is adjacent to the left of the column to be filled):
Select the cell where you wanted to double-click the fill handle.
Leftto change to the column with other data
Ctrl+Downto go to the end of the data
Rightto get back to the column that will be populated
Ctrl+Shift+Upto select up to the cell with the fill value
Ctrl+Dto fill (Down)
The keys pressed are always the same, so you can put this on a keyboard macro.
Another sequence that does the same thing:
All of the answers above do not mimic the same behavior as double clicking the bottom right corner of a cell to Autofill a column to a desired number of rows based on adjacent columns. VBA is the only way to accomplish this with only the keyboard, using the following code:
Sub AutoFill_Column() Selection.AutoFill Destination:=Range(Selection, Cells(ActiveCell.SpecialCells(xlLastCell).Row, Selection.Column)) End Sub
The same can be accomplished for autofilling a row (based on adjacent data above the row) with:
Sub Autofill_Row() Selection.AutoFill Destination:=Range(Selection, Cells(Selection.Row, ActiveCell.Offset(-1, 0).End(xlToRight).Column)) End Sub