Police in Schaffhausen after the attack. Photo: Michael Buholzer/AFP
Schaffhausen police said in a statement that a suspect was arrested by Zurich police late on Tuesday in Thalwil, a town south of Zurich.
In a press conference and additional statement on Wednesday morning police said the suspect was located thanks to help from the public, who had reported his presence in Thalwil.
He was alone and on foot at the time he was apprehended, and did not resist arrest.
The chainsaw used in the attack was not in his possession, but he was carrying two loaded crossbows and two sharpened pieces of wood in a plastic bag.
The alleged perpetrator was identified on Monday as police appealed to the public to help track him down.
The suspect has a criminal history and had reportedly been living in a forest.
He is alleged to have targeted the CSS insurance company in the northern town of Schaffhausen, storming into their office and injuring two people, one of them seriously.
Three other people suffered various injuries amid the subsequent fracas.
The suspect was caught on camera just before the attack carrying a black bag and rucksack in a photo that police issued to the public during a massive manhunt.
An international warrant was issued for his arrest and Schaffhausen police were helped by police forces from neighbouring cantons in their search.
Over 300 police officers were involved in the search.