VBA Serenity

Share

Facebook
Twitter
LinkedIn

Greetings and salutations, my fellow VBA-fearin’ congregation. Evangelizin’ Jeff here, spreading the good word about everlastin’ VBA serenity. You may remember me from mah preeeevious sermons such as Tables, PivotTables, and Macros: music to your ears and Big trouble in little spreadsheet. Well today, I’m going to praise the work of a high-yah pow-wah.

Jon Peltier monkOur most pious Brother Jon Peltier (who’s fine presence is to mah left) broke his vow of silence over at the PeltierTech monastery to make a most inspirin’ observation during his recent confession Highlight a Specific Data Label in an Excel Chart:

Because I’ve been doing a lot of coding lately, my first thought was an approach using VBA. Then of course I came to my senses, and worked out a non-programmatic approach.

If possible, it’s usually advantageous not to rely on VBA for such tasks.

Hallelujah, brother!

My visionary brother is right: if there’s one rule of VBA that you should religiously observe, it’s to let the application be the application, where ee-fishin’ tah do so. A whiles back, I jokingly spoke it alike this:

The serenity prayer for Excel:
Lord grant me the VBA skills to automate the things I cannot easily change; the knowledge to leverage fully off the inbuilt features that I can; and the wisdom to know the difference.

(And I particularly chuckled at Excel Ninja BobHC’s response: You been on them tablets again.)

This sentiment is echoed in the commandments given us in Professional Excel Development (written by those latter-day-saints Bovey, Wallentin, Bullen, and Green):

Chandoo_VBA Serenity_PED2

This Good Book evangelizes that Excel developers “…shalt be divided into five different categories”:

  1. Basic Excel users, whom generally use Excel for fairly simple tasks, but as their exposure to Excel grows, so does the complexity of their worksheets and use of complex worksheet functions, PivotTables, and Charts.
  2. Power Users, whom have a broad understanding of Excel’s functionality, and occasionally use snippets of VBA from the Net or via the Macro Recorder, but their code tends to be messy, slow, and hard to maintain.
  3. VBA Developers, whom make extensive use of VBA – perhaps too much…to the point that they tend to use VBA to tackle practically every problem.
  4. Excel Developers, whom realize that the most efficient and maintainable applications are those that make the most of Excel’s built-in functionality, augmented by VBA where appropriate.
  5. Professional Excel Developers, whom know more languages than your typical Babel Fish.

That leap from VBA developer to Excel developer is worth striving for. (Don’t bother striving to be a Professional Excel Developer…they are so nerdy that they get about as many dates as your typical cloistered monk or nun). Unfortunately gaining the wisdom to jump from that third class to the forth one ain’t easy, and dedicated sermons on this matter are few and veryfar between.

Far too often the likes of yours truly are often so focused on leading you not into temptation and instead down a righteous path, that we simply never take the flock anywhere near enough to temptation so that we might cautiously peer at it from a safe distance and say in our most solemn and hushed tone “That way surely leads to hellfire, damnation, and eternal recalculation”. No siree, I’m afraid we usually opt instead to simply get the flock away from there.

However, help is at hand, sinners. Forums such as our very own Chandoo.org/forum are a great place to get guidance on such spirited matters…particularly if you ask the right question, such as “What is the best way to achieve X using Excel version Y”. But you’ll need to ask an open question based around what you are trying to accomplish, rather than being overly focused on how you are trying to accomplish it.

For instance, if you ask “How can I efficiently achieve X with VBA then that is all you will get…answers about the most efficient way to do it within the confines of the particular tool you have specified. Which will often not be the most efficient way. In fact, I’ve lost count of the number of times where someone has asked for a formula or VBA solution to some devilishly complicated problem – and got something devilishly complicated formula or code as a result – when a mere PivotTable would have sufficed. Or when some very simple Structured Query Language (SQL) via the in-built (but antiquated) Microsoft Query interface would have nailed it.

[Aside: SQL is basically a database language use to perform the database equivalent of lookups and to crunch numbers, or to conditionally join large datasets based on multiple complex conditions. SQL can be directly leveraged by Excel with minimal programming. Heck, you can use SQL to do stuff with NO programming whatsoever via Microsoft Query – a handy (if ancient) little interface bundled into Excel that will look familiar to any Access users. For an excellent Excel-centric introduction to SQL, read Craig Hatmaker’s amazing Beyond Excel: VBA and Database Manipulation blog. Chandoo also has a great guest post by Vijay – Using Excel As Your Database – on this subject. Ignore all the naysayers and unbelievers in the comments who say “Excel shalt not be used a database” for they know not what the point is. Which is that yea Excel doeth speak in SQL tongues at a pinch, and SQL is pure salvation when it comes to manipulating data, be it Big Data, Small Data, or Somewhere-In-Between data.]

Not to mention the miracles even a layperson can perform if they have the almighty Excel 2010 and PowerPivot installed. Or Excel 2013’s Data Model, which lets you mash up data from Excel Tables and serve them up directly as PivotTables with not a VLOOKUP or Macro in sight.

The end of Excel ain’t nigh…

Every release, Excel gets stronger and stronger. Excel 2010 offered us sinners significant improvements over previous versions…giving us things like Slicers and the free PowerPivot add-in. Excel 2013 takes a giant leap forward in allowing us to leverage off of inbuilt functionality to do things that we would otherwise require tons of complex code and complex formulas to achieve. Had Excel 2013 been launched 10 years ago, I simply wouldn’t need to have been a-preaching VBA and SQL to as many unbelievers as I have. If we keep abreast of these changes, then as the functionality of Excel ramps ever up, our code can ramp down accordingly.

The bottom line here is this: if thou strive to be a really good Excel developer then thou best get to know what’s behind just about every nook and cranny of the Excel application itself. Particularly the newly prophesied ones (yea the power of PowerPivot compels you,according to that dark preacher Mike Alexander). So go and explore all those mysterious things on the ribbon. You don’t have to master all of them…but it sure does help if you have an inkling of what they all do. Not just the obvious things like Tables and PivotTables, but the more mysterious ones like Slicers, Data Validation, and What-If-Analyis. And also the completely hidden ones like Goto Special. Not only do all those things do things natively that would require many Shekels of VBA code to replicate, but most are completely addressable from VBA to boot. Meaning an Excel Developer can simply say “Excel – do that thing with this data“.

Before you try to bend Excel to your complete command, study it well. No matter how much you want to jump right in tinker with Excel’s very soul, don’t discount what’s effectively printed on the outside of the box. If you do, you’re just another lazy devil writing hellish code.
Chandoo_VBA Serenity_Devil Ain't Easy

Feel free to leave your own theological questions and musings in the confessional box below. Unless it’s to say that you don’t like Pokey LaFarge. Keep that to yourself. Because I love ’em. Saw them live in Wellington a couple of weeks back. Definitely worth checking out if they come to a town near you.

Chandoo_VBA Serenity_Good lord giveth

Facebook
Twitter
LinkedIn

Share this tip with your colleagues

Excel and Power BI tips - Chandoo.org Newsletter

Get FREE Excel + Power BI Tips

Simple, fun and useful emails, once per week.

Learn & be awesome.

Welcome to Chandoo.org

Thank you so much for visiting. My aim is to make you awesome in Excel & Power BI. I do this by sharing videos, tips, examples and downloads on this website. There are more than 1,000 pages with all things Excel, Power BI, Dashboards & VBA here. Go ahead and spend few minutes to be AWESOME.

Read my storyFREE Excel tips book

Overall I learned a lot and I thought you did a great job of explaining how to do things. This will definitely elevate my reporting in the future.
Rebekah S
Reporting Analyst
Excel formula list - 100+ examples and howto guide for you

From simple to complex, there is a formula for every occasion. Check out the list now.

Calendars, invoices, trackers and much more. All free, fun and fantastic.

Advanced Pivot Table tricks

Power Query, Data model, DAX, Filters, Slicers, Conditional formats and beautiful charts. It's all here.

Still on fence about Power BI? In this getting started guide, learn what is Power BI, how to get it and how to create your first report from scratch.

20 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.

      • Andrew Patceg says:

        Oh, that makes sense! Thank you for the explanation. I had a feeling it was something along those lines.

  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!

  13. king faisal says:

    You can use Dose for Excel Add-In that can quickly clean huge data with one click besides more than +100 new functions and features to add to your Excel to save time and effort.

    https://www.zbrainsoft.com

  14. R.Ranjit says:

    Hi,
    I have a problem in excel. The sheet attached herewith.

    TABLE CONFIG 2/6
    A B C D E F G H
    1 WEIGHT1 43,599 WEIGH2 62500 WEIGHT3 77000 WEIGHT4 66,500
    2 DEDUCTION1 15,000 DEDUCTION1 15,000 TEMP 0 DEDUCTION2 11,005
    3 RESULT 58,599 RESULT-1 77,500 RESULT-2 77,000 RESULT-3 77,505
    4 RESULT SUBSTRACT 0 0 0
    5 REQUIRED VALUE 77,500 77,000 77,505

    Note: 1- RESULT (58599) IS TO BE DEDUCTION EITHER FROM D4 OR F4 OR H4 WHICHEVER IS MOST
    LEAST CELL AMONG RESULT-1 OR RESULT-2 OR RESULT 3.
    2-HENCE, RESULT VALUE $B$3 IS TO BE PRESENTED ON CELL EITHER D4 OR F4 OR H4 WHICHER IS
    MOST LEAST VALUE
    3-FORMULA =IF(E8<H8,$B$9,IF(E8<J8,$B$9,IF(H8<J8,$B$9,IF(H8<E8,$B$9,IF(J8<H8,$B$9))))))
    CREATED ON CELL D4,F4 & H4 DID NOT WORK.
    PLS FOR YOUR HELP.
    THANK YOU

Leave a Reply