Have time to kill.
(Defun c:Text2CSVAgain ( / CollectedDAta csvFile values Collected row opf)
;;; [ pBe Jun 2020 ;;;
(and (= 1 (getvar 'Dwgtitled))
(setq CollectedDAta nil
csvFile (strcat (getvar 'dwgprefix)
(vl-filename-base (getvar 'dwgname)) ".csv"))
(progn
(while (and
(princ "Select LHS and RHS columns per sheet")
(setq values (ssget '((0 . "TEXT")))))
(if (zerop (rem (setq i (sslength values)) 2))
(progn
(setq Collected (mapcar '(lambda (d) (setq ent (entget d))
(list (cdr (assoc 10 ent))
(strcat "," (cdr (assoc 1 ent)))))
(vl-remove-if 'listp
(mapcar 'cadr (ssnamex values)))
)
)
(setq Row (mapcar 'cadr
(vl-sort
Collected '(lambda (a b)
(cond
((> (cadar a) (cadar b)))
((equal (cadar a) (cadar b) 0.1)
(< (caar a) (caar b))
)
)
)
)
)
)
)
)
(setq collectedData (cons row collectedData))
(prompt "\nPress Enter to end or ")
)
collectedData
)
(Setq opf (open csvFile "w"))
(foreach rowValue collectedData
(write-line (apply 'strcat rowValue) opf)
)
(not (close opf))
(startapp "notepad" csvFile)
)
(princ)
)
command: Text2CSVAgain
Select LHS and RHS columns per sheet
Select objects:

Specify opposite corner: 36 found
Select objects: [ Enter to accept selection ]
Press Enter to end or Select LHS and RHS columns per sheet
Select objects: Specify opposite corner: 36 found
HTH
BTW: I assure you, it will a lot easier if you are using attributes the user just needs to select the title block to gather the station number and data.
I also left the first column as blank.