Hi all,

I have a workbook with multiple sheets. One sheet is the data entry sheet and the others are for various analytics. On one of the analytics sheets, I need rows to automatically hide themselves if there is no data for that particular entry. I would like for said rows to also automatically unhide themselves if data are eventually entered. I have some code that I copied from the web in the analytic sheet that accomplishes this task, but it is incredibly slow and it executes too frequently. Here is the code as I have it now:

 Private Sub Worksheet_Calculate()
 Dim LastRow As Long, c As Range
 Application.EnableEvents = False
 LastRow = Cells(Cells.Rows.Count, "O").End(xlUp).Row
 On Error Resume Next
 For Each c In Range("O1:O" & LastRow)
    If c.Value = "No Data" Then
         c.EntireRow.Hidden = True
     Else
         c.EntireRow.Hidden = False
     End If
 Next
 On Error GoTo 0
 Application.EnableEvents = True
 End Sub
Like I said, it does what I need it to do, but it triggers ALL the time and takes 10-15 seconds or so to finish. I only need it to execute when new data are entered into the DataEntry sheet from which the analytics page is pulling from. I already have some code in the DataEntry sheet under a Worksheet Change event that triggers auto sorting on other pages every time new data are entered, so I'm guessing the place to include this would be with that event on the DataEntry sheet--I just don't know how to format it as my VBA skills are basic as of now. Specifically, every time new data are entered into the DataEntry sheet, I want any row on the Analytics sheet to hide itself if the cell in column O of that row says "No Data" and for this process to reverse itself if data are eventually added to the hidden entry.

Thank you!