Glad we have Melba here, he wrote some nice Array UDF's   
	Without his UDF, I would have added an empty column on each row (a future 'sort column') then populate it like this :
 
#include <Array.au3>
Global $aArray[][] = [["1234", "low", '=HYPERLINK(STH,STH)', 0], _
                      ["2341", "medium", '=HYPERLINK(STH,STH)', 0], _
                      ["3412", "lowest", '=HYPERLINK(STH,STH)', 0], _
                      ["4123", "high", '=HYPERLINK(STH,STH)', 0], _
                      ["1235", "critical", '=HYPERLINK(STH,STH)', 0]]
_ArrayDisplay($aArray, "Unsorted" , "|2") ; hide last column
$sStatus = "5=critical 4=high 3=medium 2=low 1=lowest"
For $i = 0 to UBound($aArray) - 1
   $iPos = StringInStr($sStatus, $aArray[$i][1])
   If $iPos <> 0 Then
	  $aArray[$i][3] = StringMid($sStatus, $iPos - 2, 1)
   Else
	  MsgBox(0, "Row " & $i, "Status not found : " & $aArray[$i][1])
	  Exit
   EndIf
Next
_ArraySort($aArray, 1, 0, 0, 3) 		; 1 = descending . 3 = sort on column 3
_ArrayDisplay($aArray, "Sorted" , "|2")	; hide last column