This is, of course, a matter of personal opinion. My own view is that Columbus is neither. He was not a hero and he was not a villain.
Columbus should not be seen as a hero because he did not really do anything heroic. He went looking for a new route to Asia and he thought he had found it. He died believing that he had made it to Asia. His “discovery” of the New World was not really something that he meant to do. It is hard to say that someone is a hero because he discovers something while he was looking for something else.
On the other hand, Columbus is not a villain who was responsible for all the bad things that happened to Native Americans. If Columbus had never sailed west, someone else would have. The Europeans would have found the New World and it is likely that the Native American population would have been decimated by disease and by the actions of the Europeans. It is not as if Columbus was the one who conquered the Aztecs or the Incas. He just happened to be the one who found the New World and made those conquests possible.
Thus, Columbus is really an accidental figure in history. He is not a hero or a villain.