How to Use the UNICHAR and UNICODE Functions in Microsoft Excel for Symbols and Character Codes

Expanding Data Visualisation Beyond Standard Typography

In modern enterprise spreadsheets, financial dashboards, and operational KPI trackers, visual indicators—such as directional trend arrows (▲, ▼), verification checkmarks (✔, ✘), star ratings (★, ☆), and geometric priority flags—dramatically improve dashboard readability. Traditionally, analysts relied on clunky workarounds: copying symbols from external web pages, inserting floating icon objects, or switching font families to legacy fonts like Wingdings or Webdings. However, changing font families frequently introduces cross-platform formatting corruption when sheets are shared with Mac, web, or mobile users.

To provide clean, universal symbol support, Microsoft introduced two native text-processing functions: UNICHAR and UNICODE. Built on the universal Unicode character standard, these functions allow you to programmatically generate symbols, emojis, and mathematical glyphs directly inside standard Excel formulas, regardless of the operating system or active font.

UNICHAR vs UNICODE: Understanding the Relationship

The two functions operate as exact mathematical inverses of one another:

  • UNICHAR(number): Accepts a numeric decimal code point (such as 9650) and renders the corresponding Unicode character (▲).
  • UNICODE(text): Accepts a text character or string (such as "✔") and returns the underlying numeric decimal code point (10004).

Function Syntax and Parameter Rules

Both functions feature a simple, single-argument syntax:

=UNICHAR(number)
=UNICODE(text)
Function Argument Requirement Validation Rules
UNICHAR number Required Must be a positive integer between 1 and 1,114,111 (the full Unicode address space). Zero or negative numbers return #VALUE!. Unmapped code points return #N/A.
UNICODE text Required The target character or text string. If a multi-character string is passed (e.g., "Hello"), Excel evaluates strictly the first character (returning 72 for "H"). Empty cells return #VALUE!.

Essential Unicode Code Points for Financial and KPI Dashboards

Bookmark these high-utility Unicode decimal values for dashboard development:

Decimal Code Formula Rendered Symbol Typical Business Application
9650 =UNICHAR(9650) ▲ (Solid Up Arrow) Positive financial variances, revenue gains, or inventory stock increases.
9660 =UNICHAR(9660) ▼ (Solid Down Arrow) Negative variance, expense overruns, or declining KPI metrics.
9654 =UNICHAR(9654) ▶ (Solid Right Arrow) Neutral performance or lateral milestone progress.
10004 =UNICHAR(10004) ✔ (Heavy Checkmark) Task completion, compliance sign-offs, and quality assurance passes.
10006 =UNICHAR(10006) ✘ (Heavy Cross Mark) SLA breaches, audit defects, and rejected transactions.
9733 =UNICHAR(9733) ★ (Solid Star) Customer satisfaction ratings and priority tier indicators.
9734 =UNICHAR(9734) ☆ (Empty Star) Unearned rating stars in fractional review matrices.
9679 =UNICHAR(9679) ● (Solid Circle) Status indicators (ideal for conditional formatting colour coding).
10 =UNICHAR(10) Line Feed (Newline) Inserts an in-cell line break when combined with text wrapping.

Practical Step-by-Step Implementation Examples

1. Dynamic KPI Variance Indicators

Suppose cell B2 holds actual revenue (£120,000) and cell C2 holds budgeted target revenue (£100,000). To automatically display an upward green arrow for favourable variance and a downward red arrow for deficits:

=IF(B2 >= C2, UNICHAR(9650) & " " & TEXT((B2-C2)/C2, "+0.0%"), UNICHAR(9660) & " " & TEXT((B2-C2)/C2, "0.0%"))

Combine this formula with standard Conditional Formatting rules to dynamically tint the text green or red based on the sign of the variance.

2. Building 5-Star Customer Feedback Ratings

To convert an integer review score (e.g., 4 in cell B2) into a visual 5-star graphical bar without external chart objects:

=REPT(UNICHAR(9733), B2) & REPT(UNICHAR(9734), 5 - B2)

If cell B2 contains 4, the cell renders: ★★★★☆.

3. Multi-Line Cell Concatenation with Native Newlines

When compiling customer shipping addresses from multiple columns into a single printable mailing block, use UNICHAR(10) to inject line breaks cleanly:

=B2 & UNICHAR(10) & C2 & UNICHAR(10) & D2 & ", " & E2

Note: Ensure that Wrap Text is enabled on the target column in Excel’s ribbon for newlines to render visually.

Auditing and Sanitising Data with UNICODE

When importing external data feeds from web scrapers or legacy databases, text strings frequently contain invisible non-breaking spaces (Unicode 160) or stray control characters that cause standard VLOOKUP and XLOOKUP formulas to fail.

To inspect why a seemingly identical text value fails to match:

=UNICODE(RIGHT(A2, 1))

If standard space returns 32, but the trailing character returns 160, you have uncovered a non-breaking web space ( ). You can purge it instantly using SUBSTITUTE:

=SUBSTITUTE(A2, UNICHAR(160), " ")

Legacy Comparison: UNICHAR vs CHAR

Excel maintains legacy CHAR and CODE functions dating back to early 8-bit ASCII systems. While CHAR is restricted strictly to 255 code points (which vary depending on Windows ANSI code pages vs Mac Roman encoding), UNICHAR and UNICODE access over one million characters with uniform, platform-independent fidelity across all operating environments.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.