I would think that your idea of summing the visits per day of month across all selected month and then dividing by the number of distinct dates (shopping day is a date, right?) is ok and should return a value.
(By the way: If you use field names like shopping day (including e.g. spaces), I think you have to enclose them with square brackets, like [shopping day], I assume you just missed that in your post?)
If your shopping day is a timestamp, you will probably need to use a count(distinct daystart([shopping day])).
I would also create the day / month / year / daystart fields all in the script.
If you still have problems, maybe you could either upload a small sample app here or describe your data model and dimensions and expressions used in the chart a bit closer.
Hope this helps,