Yes, you can make Excel cells square. But if you’re dragging row height and column width separately until they *look* equal, you’re fighting Excel instead of using its built-in math.
Quick Answer
Set row height and column width to the same numeric value — but remember: Excel measures them in different units (points vs. characters), so you need to convert. The fastest reliable method is to set row height to 20 and column width to 2.86, which yields near-perfect 20×20-pixel squares on standard zoom (100%).
All the Methods
| Method | Steps | Best For | Limitations |
|---|---|---|---|
| Row Height + Column Width Math | Set row height to X points → column width = X ÷ 7.5 (e.g., 30 pt → 4.00 width) | Precision grids (Gantt charts, pixel art, dashboards) | Breaks at zoom levels ≠ 100%; requires calculator or mental math |
| VBA Macro | Run Sub MakeSquare() For Each r In Selection r.RowHeight = 20: r.EntireColumn.ColumnWidth = 2.86: Next r End Sub | Repetitive tasks (e.g., weekly grid templates) | Requires macro enablement; won’t work on Excel for Web or iOS |
| Copy-Paste Formatting Trick | Type 1 in A1 → format as font size 20, center align → copy A1 → Paste Special → Column Width | Quick one-off sheets where you don’t want formulas or macros | Only works if default font is Calibri 11; fails with non-standard fonts |
| Conditional Formatting Grid Overlay | Apply thin borders + light fill to simulate square cells without changing dimensions | Presentations or printouts where visual alignment matters more than actual sizing | Doesn’t change cell behavior — formulas, selection, printing still use native sizes |
| Zoom + Font Size Sync | Set zoom to 125% → font size 16 → row height auto-adjusts to ~20 → column width ≈ 2.86 | Teams sharing files across monitors with mixed DPI settings | Breaks when users change zoom; not reproducible across devices |
Method 1 Deep Dive
We’ll start with the most dependable manual method: Row Height + Column Width Math. It’s counterintuitive, but Excel’s row height is measured in points (1/72 inch), while column width is measured in characters — specifically, the number of zeros that fit in the default font (Calibri 11). That’s why 20 points ≠ width 20.
The conversion factor? 7.5. Yes — divide your desired row height (in points) by 7.5 to get the matching column width. So:
- Row height 15 → column width = 15 ÷ 7.5 = 2.00
- Row height 22.5 → column width = 22.5 ÷ 7.5 = 3.00
- Row height 30 → column width = 30 ÷ 7.5 = 4.00
Let’s test this with real data. Say you’re building a simple project status grid in A1:E5:
| Project | Q1 | Q2 | Q3 | Q4 |
|---|---|---|---|---|
| Acme Corp | ✅ | ⚠️ | ⏳ | ❌ |
| Nexus Labs | ✅ | ✅ | ✅ | ✅ |
| Stellar Dynamics | ⏳ | ⏳ | ⚠️ | ⏳ |
| Veridian Systems | ❌ | ❌ | ❌ | ❌ |
| Orion Group | ✅ | ⏳ | ✅ | ⚠️ |
You want each cell to be exactly 20×20 pixels for clean icon display. So select A1:E5, right-click any row header → Row Height… → enter 20. Then select the same range, right-click any column header → Column Width… → enter 2.86 (20 ÷ 7.5 = 2.666…, but due to font rendering quirks, 2.86 gives truer 20-pixel width at 100% zoom).
Here’s the before/after comparison for cell B2:
| Metric | Before | After |
|---|---|---|
| Row Height | 15.00 pts | 20.00 pts |
| Column Width | 8.43 chars | 2.86 chars |
| Visual Cell Ratio | ~1:5 (tall & narrow) | 1:1 (perfect square) |
Pro tip: You can speed this up with keyboard shortcuts. Select your range, then press Alt + H + O + H → type 20 → Enter → then Alt + H + O + W → type 2.86 → Enter. (That’s Home → Format → Row Height, then Home → Format → Column Width.)
And here’s what most people miss: if you change the font *after* setting square dimensions, the column width stays fixed — but the row height may auto-adjust if you increase font size. So always set font first, then dimensions.
Method 2 Deep Dive
The VBA macro method saves time when you do this weekly — like updating a sprint planning board for your dev team. Let’s build one that targets only selected cells (not entire rows/columns), respects merged cells, and includes error handling.
Press Alt + F11 to open the VBA editor. Insert a new module (Insert → Module) and paste this:
Sub MakeSelectedCellsSquare()
Dim rng As Range, cell As Range
On Error Resume Next
Set rng = Selection
If rng Is Nothing Then Exit Sub
Application.ScreenUpdating = False
For Each cell In rng
If Not cell.MergeCells Then
cell.RowHeight = 20
cell.EntireColumn.ColumnWidth = 2.86
Else
' Skip merged cells — can't resize partially
MsgBox "Skipped merged cell " & cell.Address & ". Unmerge first.", vbInformation
End If
Next cell
Application.ScreenUpdating = True
End Sub
Now assign it to a button or shortcut. Go back to Excel → Developer → Macros → select MakeSelectedCellsSquare → click Options → assign Ctrl + Shift + Q.
Test it on this small dataset — say, G2:J6, tracking daily standup check-ins:
| Team Member | Mon | Tue | Wed | Thu |
|---|---|---|---|---|
| Sarah Chen | 🟢 | 🟢 | 🟡 | 🟢 |
| Diego Mora | 🟡 | 🔴 | 🟢 | 🟡 |
| Priya Kapoor | 🟢 | 🟢 | 🟢 | 🟢 |
| Jamal Wright | 🔴 | 🔴 | 🟡 | 🔴 |
| Lena Torres | 🟢 | 🟢 | 🟢 | 🟢 |
Select G2:J6, press Ctrl + Shift + Q, and watch it snap into uniform squares — no dragging, no guessing.
Surprising tip: Excel caches column width per worksheet, not per cell. So if you run the macro on G2:J6, then later add data in K2:K6, those new columns won’t auto-resize. You’ll need to re-run or extend the selection. I learned this mid-sprint review — and had to explain to my manager why the new column looked “off.” (Trust me, I learned this the hard way.)
Cheat Sheet
| Task | Shortcut / Steps | Notes |
|---|---|---|
| Set row height to 20 | Alt + H + O + H → 20 → Enter | Works on selected rows or entire sheet |
| Set column width to 2.86 | Alt + H + O + W → 2.86 → Enter | Best match for 20-pt height at 100% zoom |
| Run square macro | Ctrl + Shift + Q (after assigning) | Only works if macro is enabled and saved in Personal.xlsb |
| Reset to defaults | Select rows → Alt + H + O + A; select columns → Alt + H + O + A | “A” = AutoFit — restores default height/width |
| Verify square ratio | Right-click row header → Row Height; right-click column header → Column Width | If values differ, it’s not square — even if it looks close |
| Font-safe square setup | Set font to Calibri 11 first → then apply dimensions | Changes font size after setting width breaks the ratio |
| Print-ready square grid | Use Conditional Formatting borders + light fill — avoids scaling issues on PDF export | Actual cell dimensions often distort in print preview |