How to Track Historical Excel Counts After Drop-Down Values Change
Question details
The user needs to maintain a historical count of specific part problems (e.g., Broken, Unplugged) even after a drop-down status is updated to a non-problem state like 'Pass'.

- Product
- Excel
- Device & OS
- not provided
- Scenario
- Using Excel to track quality control or part statuses where changing a drop-down to 'Pass' normally erases the record of the previous error state, requiring a permanent counter on a separate sheet.
- Observed behavior
- Standard Excel formulas only display the current state of a cell. When the status changes, historical data is lost unless a VBA macro intervenes to permanently increment a separate counter.
Ensure you have the Developer tab enabled in Excel to access the VBA Editor. Additionally, you must save your workbook as an Excel Macro-Enabled Workbook (.xlsm) to prevent your code from being deleted upon closing.
Use a Worksheet_Change Event Macro to Maintain Historical Counts
Implementing a Worksheet_Change macro allows Excel to detect when a drop-down value is modified and automatically increment a corresponding error counter on a separate summary sheet.
This solution utilizes an automated background script that triggers every time a cell's value is altered. By monitoring specific status keywords (such as Broken or Unplugged) on Sheet 1, the script updates a master tally on Sheet 2.
It is crucial to structure the VBA code to evaluate the exact cell being changed (Target.Cells) rather than the entire affected range, which ensures accuracy even when multiple cells are pasted or updated simultaneously.
Press Alt + F11 on your keyboard to launch the Microsoft Visual Basic for Applications editor.
In the Project Explorer pane on the left, double-click 'Sheet1' (or the name of your data entry sheet). Do not use a standard Module for this event.
Create a 'Private Sub Worksheet_Change(ByVal Target As Range)' macro. Write logic to check if the 'Target' intersects with your drop-down column range.
Add a loop (e.g., 'For Each cell in Target.Cells') to handle multiple edits. Inside the loop, write If or Select Case statements to identify if the new value is 'Broken', 'Unplugged', or 'Wrong Connector'.
Within the matching case, write code to find the corresponding part row on Sheet 2 and add +1 to the value currently in the specific error category column.

Use WPS Spreadsheet to Run VBA Macros and Track Data
WPS Spreadsheet offers comprehensive support for VBA macros, allowing you to implement Worksheet_Change events and automate historical data tracking just as you would in Microsoft Excel.
- 1. Open your macro workbook: Launch WPS Spreadsheet and open your existing .xlsm tracker file.
- 2. Access the VBA Editor: Navigate to the Developer tab on the ribbon and click on 'Visual Basic', or use the Alt + F11 shortcut.
- 3. Implement your code: Paste your Worksheet_Change event logic into the Sheet 1 module, mapping the counters to Sheet 2.
- 4. Test your drop-downs: Return to the main spreadsheet, change a drop-down value to an error status, and verify that the counter on Sheet 2 increments correctly.

Frequently Asked Questions
Why isn't my Worksheet_Change macro triggering when I change a drop-down value?
This usually happens if the macro is placed in a standard 'Module' instead of the specific Sheet object (e.g., Sheet1) in the VBA Editor. It can also occur if macros are disabled in your Trust Center settings, or if 'Application.EnableEvents' was accidentally set to False by a previous macro.
How do I stop my VBA macro from looping endlessly when it updates a counter?
If your macro modifies a cell on the same sheet it is monitoring, it will trigger itself again. To prevent this infinite loop, add 'Application.EnableEvents = False' before your counting code executes, and 'Application.EnableEvents = True' immediately after.
Can I track multiple drop-down columns in the same worksheet?
Yes. Inside your Worksheet_Change event, you can use the 'Intersect' function to verify if 'Target' falls within any of your specific columns. You can define multiple ranges to monitor and apply different counting logic for each column.




