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