# Remove Blank Rows After PDF Conversion in One Pass

- Author: FastBankConvert (https://www.fastbankconvert.com)
- Published: 2025-11-12
- Updated: 2025-11-12
- Category: Fixing the converted file
- Canonical: https://www.fastbankconvert.com/blog/remove-blank-rows-after-pdf-conversion

> Remove blank rows after PDF conversion without deleting real data: filter for blanks, Go To Special, and rows that only look empty.
To remove blank rows after PDF conversion in one pass, add a helper column that counts the filled cells in each row, filter it for 0, delete the visible rows, then clear the filter. Only fully empty rows go. Rows that are blank in one cell but hold data elsewhere stay, which a quick blank-cell delete would wipe out.

## Why does PDF conversion leave blank rows?

Blank rows appear because a converter turns vertical gaps on the page into rows. A PDF has no table, only text placed at positions, so the space between a page header and the first line, or the padding around a subtotal, can come across as an empty row. Page breaks add more of them.

A typical converted statement shows three kinds of gap:

- **Page gaps.** Each printed page ends with a footer and starts with a header. The space around them becomes one or two empty rows at every page join.
- **Spacing rows.** Some statements leave white space between date groups or before a daily total. The converter keeps that space as a row.
- **Leftover rows.** When you delete repeated page headers by hand, the rows they sat in may stay behind with nothing in them.

Merged cells can also produce rows that look empty. A heading merged across several rows leaves its value only in the top cell. If your sheet has those, [unmerging cells after a PDF conversion](/blog/unmerge-cells-after-pdf-conversion) should come first, because the blank cells it reveals belong to the heading.

## Filtering blank rows out of a converted statement

The safest single pass uses AutoFilter on a helper column that counts how many cells in each row hold anything. A row that scores 0 is padding. A row with even one filled cell, such as a wrapped description line with no amount, scores above 0 and stays.

Here is the method, step by step:

1. Add a helper column at the right, headed Filled, and enter `=COUNTA(A2:F2)` in row 2, adjusting the range to your columns. Fill it down.
2. Select the header row and choose Data, then Filter.
3. Open the filter on Filled and tick only 0.
4. Select the visible rows by their row numbers, right-click and choose Delete Row.
5. Clear the filter. Every remaining row has at least one value.

The helper column matters more than it looks. Filtering the amount column alone would also catch wrapped description lines, which have text but no amount. COUNTA counts any cell with content, so a row only reaches 0 when nothing at all is in it.

### Example before and after

The table below is an example of part of a converted page. The values are made up.

| Row | Date | Description | Amount | Filled |
| --- | --- | --- | --- | --- |
| 14 | 03/09 | Card purchase, hardware store | -84.10 | 3 |
| 15 | | | | 0 |
| 16 | 03/10 | Transfer from savings | 500.00 | 3 |
| 17 | | ref 88213 | | 1 |
| 18 | | | | 0 |

Rows 15 and 18 go. Row 17 stays, because it is the second line of a description, not padding. [Joining wrapped rows back onto their transaction](/blog/join-wrapped-rows-in-excel) is the fix for that kind of row.

## Go To Special Blanks and the blank-row deletion trap

Go To Special, then Blanks, selects every empty cell in a range, and many guides suggest deleting the rows it finds. On a converted statement that deletes data. A row with an empty amount cell, such as a wrapped description or an opening balance line, has a blank and gets removed with the padding.

The trap works like this. You select columns A to E, press F5, choose Special and Blanks, then use Delete, Entire Row. Excel deletes each row that holds any blank cell in the selection, not only rows that are fully empty. On a sheet where debits and credits sit in separate columns, nearly every row has a blank in one of them, so the command can empty most of the sheet.

Go To Special is still useful when you point it at one column that only padding leaves empty. On a statement where every real line prints a balance, select just the balance column, run Go To Special, Blanks, and delete the entire rows. Wrapped description lines have no balance either, so join them to their transaction first, or this pass deletes them too.

Undo works straight after a bad delete. It does not work after you save and close, so keep a copy of the converted file before any bulk delete.

## Which blank rows only look empty?

Some rows look blank but hold a space, an empty string from a formula, or a non-breaking space carried over from the PDF. COUNTA counts them as filled, so they survive the filter and stay in the sheet. They also break sorting and make a column of amounts look incomplete.

To find them, use a stricter test in the helper column:

`=SUMPRODUCT(--(LEN(TRIM(SUBSTITUTE(A2:F2,CHAR(160)," ")))>0))`

This replaces non-breaking spaces with normal spaces, trims them away and counts only cells that still have a character. A row that scores 0 here but more than 0 with COUNTA is a fake blank. Filter for 0 and delete as before.

Fake blanks are common when a PDF was made by printing a styled spreadsheet. Cell borders and shading carry no text, but the converter may still write a space into each cell to keep the grid. [Keeping only the formatting that matters after conversion](/blog/convert-pdf-to-excel-without-losing-formatting) explains why those styled grids convert badly.

Scanned pages bring another variant. Optical character recognition can read a smudge or a fold line as a dot or a dash, so a row that is empty on paper arrives with one stray mark. If you are digitizing paper items such as checks, [scanning checks into Excel](/blog/scan-checks-into-excel) covers what that process reads and what to tidy afterwards.

## Counting transactions after the blank rows are gone

A quick count proves the cleanup removed padding and nothing else. Before you delete anything, count the rows that have an amount with `=COUNT(D:D)`, where D is the amount column. Run the same formula afterwards. The two numbers must match, because no real transaction lacks an amount.

Two more checks finish the job:

- **Totals.** `=SUM(D:D)` should give the same value before and after. A changed total means a row with money in it was deleted.
- **Balance.** If the statement prints a running balance, the last balance in the sheet should still equal the closing balance on the PDF.

If a count drops, press Undo, or reopen your saved copy and filter more narrowly. When you would rather skip the cleanup, FastBankConvert is built to return statement lines as rows with dates, descriptions, amounts and balances in their own columns, and it is getting ready to open; you can ask for an invite at [Get started](/get-started).
