The following solution has worked for me, but only involving custom picklist fields... you might be able to get it to work for standard picklist fields, though!
Just create a bookmark in Chrome (I’ve only tested this in Chrome but this should work in other browsers too I'm assuming...)
Paste the following code as the URL of the bookmark:
javascript:/* Gather all of the a elements on the page. */var links = document.getElementsByTagName("a");/* Pick out the Del links. */var delLinks = new Array();for (var i = 0; i < links.length; i++) { var link = links[i]; if (link.innerHTML == "Del") { /*alert("Del link found!");*/ /*alert(link.attributes['href'].value);*/ delLinks[delLinks.length] = link; }}/* Open each Del link to delete the associated picklist value. This code can be augmented as desired to only delete certain values. However, for custom picklists it's probably easier to just delete all of the values and then re-add the desired values. */for (var i = 0; i < delLinks.length; i++) { var delLink = delLinks[i]; xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET",delLink.attributes['href'].value,false); xmlhttp.send(); }
Finally, navigate to the picklist configuration page, and click on the bookmark.
Since the requests are synchronous, the page will appear to hang, and Chrome may ask you to kill the page. Do not kill it, just wait it out. In my case, it didn't appear to do anything until I simply refreshed the page.
The only known flaw with this approach is that the last value of a picklist cannot be deleted. This means there is always 1 value left.
Please thank http://www.wentari.com/2013/09/mass-delete-picklist-values-in.html