How to Automatically Hide Excel Rows Below a Variance Threshold Using VBA
Question details
The user needs to automatically hide specific rows using VBA when absolute variance values fall below a defined materiality threshold, without affecting headings or blank rows.

- Product
- Excel
- Device & OS
- not provided
- Scenario
- Comparing variances in financial reports where rows with absolute values in column C that are less than a user-defined threshold in cell D3 should be automatically hidden.
- Observed behavior
- Rows with variance values below the defined threshold need to dynamically hide when the threshold cell is updated, preserving the visibility of non-numeric category rows and empty spaces.
Ensure that the Developer tab is enabled in your Excel ribbon. It is highly recommended to save a backup copy of your workbook before running VBA scripts, as macro actions cannot be undone using the standard Undo feature.
Use a Worksheet_Change Event VBA Macro
Apply a VBA macro directly to the worksheet module to automatically trigger hiding rows whenever the specific threshold cell is updated.
This VBA script leverages the Worksheet_Change event, meaning it will automatically run in the background whenever you modify the specified threshold cell (D3). It checks values in column C and compares their absolute values against the threshold.
Right-click on the specific worksheet tab at the bottom of your Excel window and select 'View Code' from the context menu.
Copy and paste the following VBA code into the blank module window: Private Sub Worksheet_Change(ByVal Target As Range) Dim Mat As Range Dim VarRng As Range Dim var As Range Set Mat = Range("D3") Set VarRng = Range("C1:C100") Cells.EntireRow.Hidden = False If Not Application.Intersect(Target, Mat) Is Nothing Then For Each var In VarRng If IsNumeric(var) And Not IsEmpty(var) Then If Abs(var) < Mat Then var.EntireRow.Hidden = True End If End If Next var End If End Sub
Close the VBA Editor. Click 'File' > 'Save As' and choose 'Excel Macro-Enabled Workbook (*.xlsm)' from the 'Save as type' dropdown to ensure your code is preserved.
Type a new threshold number in cell D3 and press Enter. The rows in range C1:C100 with an absolute value less than D3 will automatically hide.

Execute Macros and Manage Data Effortlessly in WPS Spreadsheet
WPS Office Spreadsheet fully supports VBA macros, allowing you to run automated scripts like hiding rows based on variances. It offers a familiar interface and excellent format compatibility for complex reporting tasks.
- 1. Open your workbook: Launch WPS Spreadsheet and open your .xlsm file containing the variance data.
- 2. Enable Macros: If prompted by a security warning beneath the ribbon, click 'Enable Macros' to allow the Worksheet_Change event script to run securely.
- 3. Access the VBA Editor: Navigate to the 'Developer' tab on the ribbon and click 'Visual Basic' to view, modify, or troubleshoot your active macros.
- 4. Update the Threshold: Change the variance value in cell D3 directly in the sheet to instantly trigger the automatic row hiding in WPS Spreadsheet.

Frequently Asked Questions
Why aren't my rows hiding when I update the data in column C?
The provided script is tied specifically to changes made in the threshold cell (D3) via the 'Application.Intersect' condition. To trigger the macro when data in column C changes, you would need to adjust the Intersect range to include column C.
How can I expand the checked range beyond row 100?
In the VBA code, locate the line `Set VarRng = Range("C1:C100")`. You can adjust "C100" to match the final row of your data, such as "C1000" or "C5000".
Will this macro delete the hidden rows permanently?
No, the macro only hides the rows from your view. The underlying data remains completely intact, and the rows will reappear if the threshold is lowered or if you manually unhide all rows.
Can I use this VBA code in a standard .xlsx workbook?
No. Standard .xlsx workbooks are designed to strip out VBA macros for security reasons upon saving. You must save the file as an Excel Macro-Enabled Workbook (.xlsm) or Binary Workbook (.xlsb).




