It's the age old story. The difference between compilation time and execution time. Your %let will create the macro variable at compilation time (i.e. before any data has been run through, before the datastep has been executed). To update the value of a macro variable at execution time you need to use call symput.
I would recommend looking up some documentation so that you understand it but basically what you need is:
If var> &number then do;
call symput('Existing_Variable', &Existing_Variable+1);
I'm not sure it will like referencing itself. Why not create the count variable as a sas variable then use a call symput at the end to put that count value into your macro variable.