Untrimmable Spaces – Excel Formula

Posted on January 12th, 2017 in Excel Howtos , Learn Excel - 17 comments

So how was your Christmas / New Year break? We had a quiet Christmas. Then we hiked a few mountains and camped in bush for few days. New Year was quiet too (as most of the family & friends are in India, while we are in NZ). As usual, we cooked and ate delicious food, had a few drinks and spent time playing cards, building stuff with Lego and drawing silly portraits of each other. I even squeezed in a bit of cycling.

Let’s talk about the untrimmable spaces.

We all know that TRIM() removes extra spaces from the beginning, ending and middle of a text.

So for example, if A1 has ” something and    one   more    ”

TRIM(A1)

will give “something and one more”

We can use CLEAN() function to remove non-printable characters (like the ASCII codes 0 to 31).  Of course, SPACE is technically a printable character, so CLEAN() won’t remove spaces.

The untrimmable spaces…?

The other day Sreekanth emailed me a sample of data and asked, “how do I remove the spaces in this list and convert them to numbers?”

Naturally I tried to TRIM().

But the data won’t budge. See below.

untrimmable-spaces

Hmm, let’s investigate why.

By using CODE(LEFT(B4,1)), we can check the code for the very first character in the value ”  4,124,500.00 ”

It is 160.

Hmm, 160, where have I met you before?

Poking in the Insert > Symbol tells us that 160 is the no break space. What an appropriate name that is.

char-160

In fact no break space is HTML character   ie spaces printed on a web page. (Just to be clear not every space on a web page is char 160, but sometimes you have   instead of SPACE.)

So how to remove the no break spaces?

Simple, we use SUBSTITUTE().

The formula =SUBSTITUTE(B4,CHAR(160),””) removes all the CHAR(160)s from B4.

But we want the number…

We can add one extra step to the above SUBSTITUTE() formula to convert text in B4 to number.

The below formula does the trick.

=SUBSTITUTE(SUBSTITUTE(B4,CHAR(160),””),”-“,””)+0

It replaces all CHAR(160)s and -s with blanks and then adds 0 to the resulting text thus forcing Excel to convert text to number. Bingo.

removing-spaces-excel-formula

So there you go. For every byte of dirty data that sneaks in to Excel, there are eight ways to fight it out, at least.

Download Example Workbook

If all this space business sounds like rocket science, then check out the example workbook to understand the formulas better.

How do you remove untrimmable spaces?

If it is a one time job, I usually rely on Find Replace to get rid of any symbols, characters or phrases. But if I have lots of data or changing data, I use SUBSTITUTE, TRIM, CLEAN.

What about you? How do you remove untrimmable spaces? Please share your tips in the comments.

17 Responses to “Untrimmable Spaces – Excel Formula”

  1. MF says:

    Hi Chandoo,
    First of all, HAPPY NEW YEAR!!! Wish you and your family another fruitful year ahead.

    To answer your question: Power Query is the best way to trim. 🙂

    Btw, if Power Query is not available, then formula would absolutely do... but did you forget to mention also Char 32?

    One more question: Is the trailing minus meant to be a negative number? Maybe only the sender knows... 🙂

    Cheers,

  2. Duncan Williamson says:

    I know these spaces can be a real pain but these days I advise Excel users to learn and use Flash Fill and that will learn what to do pretty quickly.

  3. David Hager says:

    Highlight range to be cleaned. Then, in Replace, hold down the Alt key and type 0160. Replace with nothing.

  4. Steve Jones says:

    I accomplished this by writing a macro to go through all the possible unprintable characters. Looped through the range.

  5. Ramnath D says:

    I use a different method here. First, I will copy the data from Excel and paste it in a notepad. In Notepad, I will do a Find Blanks (Space " ") and Replace (Empty) with nothing.

    Then you can copy the data from Notepad and paste it back to Excel which will be a perfect number as you desire.

    But Thanks for the formula. Its probably the 2nd out of 8 tricks as Chandoo mentioned. Waiting for the rest among 8 from other users 🙂

  6. Andrew says:

    I don't understand the x's. Why weren't they removed in the formula? Or are they part of some sort of numeric formatting that I'm not familiar with? I saw how you handled the non-breaking spaces and the dashes, but am confused about what role the x's played in all this.

    Thanks!

    • NARAYAN says:

      Hi Andrew ,

      The xs have been used solely to demarcate the actual data text ; thus , without the x in place at the end of text , as in :

      x 4,124,500.00 x

      it would be impossible to know that there are unwanted trailing characters , in this case , after the last 0.

      These xs are not part of the original data text , nor are they used in the formulae ; they are put in only so that readers can visualize the individual items of data as they are in practice. Think of them as imaginary delimiters.

  7. Mucio says:

    You can type this character using the Keys Alt+0160.
    Very useful to replace this Character using Find and Select resource.

  8. Neva says:

    For many years, my jobs have included ETL tasks and I built this macro to help long, long ago. I tweak it every now and again. Many co-workers, past and present, have it wired to a button on their toolbar.

    Sub Clean_and_Trim()
    'CAUTION: Strips leading zeroes -- do not use on zipcodes, etc.

    If Application.Calculation = xlCalculationAutomatic Then
    Application.Calculation = xlCalculationManual
    Revert = 1
    ElseIf Application.Calculation = xlCalculationManual Then
    Revert = 0
    End If

    For Each Cell In Selection
    For x = Len(Cell.Value) To 1 Step -1
    If Asc(Mid(Cell.Value, x, 1)) = 160 Then
    Cell.Replace What:=Chr(160), Replacement:=" ", LookAt:=xlPart, MatchCase:=True
    End If
    If Asc(Mid(Cell.Value, x, 1)) = 32 Then
    Cell.Replace What:=Chr(32), Replacement:=" ", LookAt:=xlPart, MatchCase:=True
    End If
    Next x
    If Cell.Value "" Then
    Cell.Value = Application.Clean(Application.Trim(Cell.Value))
    End If
    Next

    If Revert = 1 Then
    Application.Calculation = xlCalculationAutomatic
    ElseIf Revert = 0 Then
    Application.Calculation = xlCalculationManual
    End If

    End Sub

  9. Brigitte Calahate says:

    This is awesome! What if you have several characters you need to have removed? What would be the easiest way as I can imagine there are several ways.?

    # - 35
    $ - 36
    - 62
    / - 47
    , - 44
    . - 46
    " - 34
    : - 58

  10. Roby says:

    This is typical case of a Fitbit data export to Csv file. Each number has CHAR160 as thousand separator.. how smart Fitbit, thank you 😉

    By the way, i prefer to copy the character, and use find and replace.

  11. Suhas Shetty says:

    Sometimes it happens if you copy a table from outlook and paste it in excel. When you apply formula on those cells you will get error. What i use to do is
    copy one character that looks like space,
    select the entire range,
    go to Find and replace,
    Paste the copied character in Find option
    Leave the replace option unfilled..
    click on replace all..

    All the errors shall be converted in to proper values..

    Process looks lengthier.. but it is one of the simplest method

  12. Gerry says:

    If Clean, Trim, and Substitute, or Find and Replace does not complete the job, I usually enter a value of 1 in an empty cell. Copy the Value of 1, Highlight the range of text numbers, and Paste Special, Values, Multiply. This site is great!

Leave a Reply