Elisp regexps are represented as strings, which means backslashes are interesting, as they are not only special to regexps, but also when writing strings.
Emacs requires a literal \ character to be escaped in the double-quoted read syntax for strings and so, when the code is processed by the lisp reader, "\\" becomes a string object containing a single \ ...
You can use org-number-to-letter from org-table.el (requires at least Emacs 26.1 or Org 9.1.9?)
;; => "Z"
;; => "AZ"
And type C-M-% (query-replace-regexp) with
[0-9]+ → \,(org-number-to-letters \#&)
If you need to do the search-and-replace from Lisp, use re-search-...
104 would be cz I think.
Using org mode eval setup:-- I suspect there are better choices fr functions but I'm an elisp learner.
These conversions might be more appropriates in your code in that there's less if/thens based on ranges.
(setq c 104)
(setq lsc (char-to-string (+ (% (- c 1) 26) (string-to-char "a"))))
(setq msc (...