As a manager, with this as a semi-regular occurrence, I would pull in the employee on a day when they *weren't* angry, and make it clear that interacting civilly with coworkers was a non-negotiable part of the job. If there were counselling services available through work, I would pass that information on. If they pushed back, or refused to change I would push it further, and make it very clear that their job depended on this - they don't have to be cheery sunshine, but they do have to be civil, and if if they can't control their temper at the office, they will be fired.
As a coworker, it would depend somewhat on how much support I could expect from my manager. If there is no support, and this person's bad behaviour is accepted, I'd do my best to ignore it, and depending on how bad it is, possibly consider looking for a new job. If there is support, a deliberate pause while I looked at them, followed by an "Okay then." and walking away when they snapped at me. Or, as appropriate, an "I'll come back and discuss this with you later when you are calmer." Depending on they way she treats me, "Please do not speak to me like that" might work. And I'd be honest if my own work is delayed - "Sally's in a bad mood today, so I couldn't get the report from her - I should be able to do it tomorrow."
If it's regular, or interferes with my own work, then I'd go and speak with my own manager - "About once every two weeks, Sally comes in to work very angry, and refuses to communicate / is generally rude and unhelpful, which makes it hard for me to do (important job function). How should I handle this?"
I do think this sort of thing is very important to deal with from a manager perspective, particularly in a small office, as it can really poison the atmosphere. If the management doesn't care, or is afraid to stand up to a nasty or bullying coworker, the other employees will notice, and know that the manager is not willing to manage effectively. If it's bad enough, the best employees will actually leave if they have the chance.