In the following Google sheet:
A B
------------------------
1| Tom | something |
2| | something |
3| John | something |
4| Lana | something |
5| | something |
6| | something |
7| Jason | something |
------------------------
I want an array formula applied to column A which will automatically fill any blanks with the last data in the cell above (or above that, if there are multiple blanks).
The result should look like this:
A B
------------------------
1| Tom | something |
2| Tom | something |
3| John | something |
4| Lana | something |
5| Lana | something |
6| Lana | something |
7| Jason | something |
------------------------
As the sheet can be massive, applying the formula to each cell is not practical.
If I paste the formula =if(ISBLANK(A2), A1) into the blanks manually it will fill them, but dragging said formula over a whole column will not work.

The simplest way to achieve this goal would be to create a new column, and use the formula
=IF(ISBLANK($A2), $B1, $A2)from B2 down. I think that what you meant was that you can't simply replace the column in place, correct? This would solve it in that case, but it is not a single arrayformula. If you are worried about inserting the formula into all rows, try selecting the first cell, CTRL+SHIFT+Down arrow key to select the full range, and CTRL+ENTER to paste the formula.If you truly need an arrayformula, one would hope that
=ArrayFormula(IF(ISBLANK(A2:A), B1:B, A2:A))or the like would work, but unfortunately Sheets does not iterate over the results of this formula so that it does. Other functions (such as vlookup) do work properly, but I'm not sure how to compose a formula to achieve what you're looking to do here using those.