# Duplicate Rows After PDF to Excel: Find Real Repeats

- Author: FastBankConvert (https://fastbankconvert.com)
- Published: 2026-10-17
- Category: Fixing the converted file
- Canonical: https://fastbankconvert.com/blog/duplicate-rows-after-pdf-to-excel

> Duplicate rows after PDF to Excel come from repeated pages or overlap. Find them, tell them from two genuine identical charges, and remove safely.
Duplicate rows after PDF to Excel usually come from a page read twice, a line repeated at a page break, or two files that overlap. Build a key column from date, description and amount, flag the repeats with COUNTIFS, then use the running balance to decide which copies are false before you delete any of them.

## Where do duplicate rows after PDF to Excel come from?

Duplicate rows come from the source file or from how it was converted. A statement can print the same line twice on purpose, a converter can read one block of text twice, and a person can combine files that cover the same days. Each cause leaves a different pattern, and the pattern tells you how to fix it.

The common sources:

- **Overlapping statements.** Monthly statements do not always break on the same day. If one ends on March 31 and the next starts on March 28, combining them produces a few days of repeated lines.
- **Carried-forward lines.** Some banks reprint the last transaction of a page, or a "balance brought forward" line, at the top of the next page. The converter reads both.
- **Pages converted twice.** A file uploaded twice, or a page range that overlaps when you convert a long statement in parts, puts whole pages in the sheet twice.
- **Summary repeats.** A statement may list transactions by date, then again by category or card holder. Converting the whole file captures both lists.

Before fixing anything, find the pattern. Whole pages in a block point to a conversion repeat. A few rows at each page join point to carried-forward lines. A cluster at the start or end of a month points to overlapping statements.

### Conversions run twice by accident

A conversion that seems to hang invites a second click, and two outputs then get pasted together. Knowing [how long a PDF to Excel conversion should take](/blog/how-long-does-pdf-to-excel-conversion-take) helps you wait out a slow file instead of starting it again.

## Building a duplicate key column for converted transactions

A duplicate key is one text value per row that joins the fields that make a transaction unique. Two rows with the same key are candidates for duplicates. On a bank statement the key is usually date, description and amount, and sometimes a reference number when the bank prints one.

The examples here assume date in A, description in B, signed amount in C and balance in D. Add a column E headed Key and enter:

`=TEXT(A2,"yyyy-mm-dd")&"|"&TRIM(B2)&"|"&TEXT(C2,"0.00")`

TEXT fixes the date and amount to one form, so a date shown two ways or an amount with a stray decimal still produces the same key. TRIM removes the extra spaces that converted descriptions often carry.

Next to it, add a Count column:

`=COUNTIFS($E$2:$E$500, E2)`

in column F. A count of 1 means the row is unique. A count of 2 or more means another row shares its key. Filter Count to values greater than 1 to see every candidate.

### Reference numbers and long IDs

If a statement prints a reference or trace number, add it to the key, because it separates two real charges that share a date and amount. Long numbers need care. Excel keeps only 15 significant digits, and a 16-digit reference displayed as 1.23457E+15 loses its last digits, so two different references can collapse into one key. [Stopping Excel from turning long numbers into scientific notation](/blog/stop-excel-scientific-notation) explains how to keep them as text.

## Are two identical charges a duplicate row or real spending?

Two identical rows are not always a mistake. Two coffees on the same morning, two equal transfers, or a recurring fee charged twice by the merchant are real transactions with the same date, description and amount. The running balance tells them apart, because a real second charge changes the balance and a conversion copy does not.

Look at the balance column on the two rows. If the statement printed a balance after each line, a genuine repeat shows two different balances, each one lower than the last by the amount. A false copy repeats the same balance, because it is the same printed line read twice.

### A worked example

The table below is an example of converted rows with keys, counts and balances. The values are made up for illustration.

| Row | Date | Description | Amount | Balance | Count | Verdict |
| --- | --- | --- | --- | --- | --- | --- |
| 40 | 05/12 | Coffee shop 221 | -4.75 | 1,302.10 | 2 | Real |
| 41 | 05/12 | Coffee shop 221 | -4.75 | 1,297.35 | 2 | Real |
| 42 | 05/13 | Electric utility | -96.40 | 1,200.95 | 2 | Keep one |
| 43 | 05/13 | Electric utility | -96.40 | 1,200.95 | 2 | False copy |
| 44 | 05/14 | Card refund | 18.00 | 1,218.95 | 1 | Unique |

Rows 40 and 41 share a key but the balance drops between them, so both are real. Rows 42 and 43 share a key and a balance, so row 43 is the same line read twice. Delete row 43 and the balances run on from 1,200.95 without a gap.

### When there is no running balance

Credit card statements and some savings statements print no balance per line. Then compare with the PDF. Find the date on the printed page and count how many identical lines it shows. If the page prints two coffee charges, keep two rows. If it prints one, the second row is a copy. It is slower, but it is the only reliable check without a balance.

## Removing duplicate rows without losing genuine repeats

The safe way to delete is to mark the false copies first, check the marks, and only then delete. Add a column, decide each candidate with the balance test, and filter for the rows marked as copies. Deleting from a filtered list of marked rows keeps every real repeat in place.

A practical order of work:

1. Save a copy of the converted file before any deletion.
2. Add an Order column with the row number, `=ROW()`, converted to values. It lets you restore the printed order after any sort.
3. Build the Key and Count columns as above.
4. Add a Copy flag in column G: `=COUNTIFS($E$2:E2, E2, $D$2:D2, D2)>1`. It marks a row only when a row above it has the same key and the same balance. The first of each pair stays unmarked.
5. Filter the Copy flag to TRUE, check each row against the PDF, then delete the visible rows.
6. Clear the filter and sort by Order to return to the original sequence.

Sorting by date is tempting at step 6, but a date sort can shuffle same-day lines out of the order the bank printed them. [Sorting transactions by date in Excel](/blog/sort-transactions-by-date-in-excel) covers how to sort without losing that order.

### Removing whole repeated pages

When the pattern is a full page converted twice, skip the formulas. Find where the repeated block starts and ends, select those rows by their row numbers and delete them in one action. Then run the key check on the joins to catch any stray line.

## Remove Duplicates and its displayed value matching

Excel's Remove Duplicates command is fast, but on converted statements it deletes genuine repeats along with false copies. It keeps the first row of each matching group and removes the rest, with no look at the balance. It also compares cell contents as displayed, so formatting can hide or create matches.

Microsoft's guide to [filtering for unique values or removing duplicate values](https://support.microsoft.com/en-us/excel/get-started/filter-for-unique-values-or-remove-duplicate-values) states that the first occurrence is kept and the others are permanently deleted. It also says the comparison depends on what appears in the cell rather than the value stored in it, and gives the example of one date shown as "3/8/2006" and "Mar 8, 2006" counting as two unique values. The same guide notes that duplicates cannot be removed from data that is outlined or has subtotals.

Those rules cause two problems on converted files:

- **Real repeats vanish.** If you tick only Date, Description and Amount, the second coffee charge is deleted, and the account comes out $4.75 short.
- **Format differences hide copies.** If the converter formatted one page's amounts with two decimals and another page's with none, identical rows look different and survive. Mixed number formats are common after conversion, which [converting a PDF to Excel without losing the formatting that matters](/blog/convert-pdf-to-excel-without-losing-formatting) deals with.

Remove Duplicates is safe in one case: when you include the Balance column in the comparison and every line has a printed balance. Then two rows match only if they share a key and a balance, which is exactly the false-copy test. Even then, run it on a copy of the sheet first.

## Running balance proof after deleting duplicate rows

The running balance proves the cleanup is finished. Opening balance plus every deposit, minus every withdrawal, should equal each printed balance and the closing balance. If one false copy is still in the sheet, the check on that row is off by its amount.

Add a check column, with the opening balance in D1, signed amounts in C and printed balances in D:

`=ROUND(D1 + C2 - D2, 2)`

Fill it down. Every row should show 0. A non-zero value marks the first row where the sheet and the statement disagree. If the value equals the amount of a nearby row, that row is a copy you missed. If it equals the negative of an amount, you deleted a real transaction, and the saved copy from step 1 gets it back.

Finish with two totals. The count of rows should match the number of transaction lines on the PDF, and the closing balance in the sheet should equal the one printed on the last page.

FastBankConvert is built to put each statement line in its own row, and if a statement's balances do not add up after conversion, it tells you before you download. It is getting ready to open, and [Get started](/get-started) lets you ask for an invite.
