動作はExcel2010で確認していますが画面はMicrosoft 365バージョンのものです。
数値(ソートキー)の重複がない場合
2段階で求める方法
並べ替えの基準になる数値に重複がない場合の例です。
この場合はかなり簡単に並べ替えができます。
ここではB列の値(社員番号)をソートキーとして昇順(小さい順)で並べ替えるものとし、左側の3列のデータを並べ替えた結果を得るものとします。
まずF3セルに次の式を入力します。

F3セル
=SMALL(B$3:B$9,ROW(A1))
B列の数値から1番目(ROW(A1))に小さい値を抽出するという式です。
結果として最も小さい数値である「101」が抽出されています。
降順(大きい順)にする場合は「SMALL」を「LARGE」に代えればOKです。
式をF9セルまでフィルコピー(F3セルを選択して右下の小さい四角をF9までドラッグ。あるいはコピペでもいいです)すると社員番号が小さい順に並べ替えらえました。コピーに伴い上記式中の「ROW(A1)」がF4セルでは「ROW(A2)」、F5セルでは「ROW(A3)」…のように書き換えられ、結果的に小さい順に2番目、3番目…の数値が得られるためです。

続いて隣のG3セルに次の式を入力します。

G3セル
=INDEX(C$3:C$9,MATCH($F3,$B$3:$B$9,0))
隣のF3セルの値(101)をB列から検索し、同じ行にあるC列の値を取得するという内容です。
後のフィルコピーのため絶対参照の付け方に注意が必要で、横方向にコピーした際にMATCH関数の第1引数(検索値)列が変わらないよう「$F3」とするのがポイントです。
あとはこれをG9セルまでフィルコピーし…

そのままH9セルまでフィルコピーすれば完了です。

ちなみにH9セルの数式は「=INDEX(D$3:D$9,MATCH($F9,$B$3:$B$9,0))」となっています。
F9セルの数値(110)をB列から検索し、同じ行にあるD列の値を取得するという意味です。
1種類の式で済ませる方法
上記の内容は、実は1つの数式のコピーで済ませられます。

F3セル(F9セルまで、さらにH9セルまでフィルコピー)
=INDEX(B$3:B$9,MATCH(SMALL($B$3:$B$9,ROW(A1)),$B$3:$B$9,0))
1つ上の例の内容を1つにまとめたものとなっています。
つまり上記の説明がヒントになっていますので詳しくはそちらをご確認ください。
数値(ソートキー)の重複がある場合
並べ替えの基準となる数値に重複がある場合の例です。
数値だけでは行を特定できないのでなかなか面倒な内容となります。作業列を使う方法と使わない方法を試してみますが、後者は難解です。
作業列を使う方法
値の取得順位を求めたうえでソートを行う方法です。
ここではB列の値(得点)をソートキーとして降順(大きい)で並べ替えるものとし、左側の3列のデータを並べ替えた結果を得るものとします。
まずはF3セルに次の数式を入力してF9セルまでフィルコピーしています。これにより、同じ行にある点数の取得順位を求めています。

F3セル(F9セルまでコピー)
=COUNTIF(B$3:B$9,">"&B3)+COUNTIF(B$3:B3,B3)
まず同じ行の数値(点数)より大きい数値がいくつあるかカウントしています。さらに同じ行にある数値と等しい数値がB3セルからB列の同じ行までの間(この式だとB3の1セルだけですが)にいくつあるか数値をカウントしています。最後にそれらを足しています。
これにより、同じ行の数値を何番目に取得すべきなのかという数値が得られます。
なお昇順(数値の小さい順)にする場合は「">"」を「"<"」にします。
続いてG3セルに数式を入力し、G9セルまで、さらにI9セルまでフィルコピーすることでソートが完了します。

G3セル(G9セルまで、さらにI9セルまでフィルコピー)
=INDEX(B$3:B$9,MATCH(ROW(A1),$F$3:$F$9,0))
F列にある取得順位をもとに、取得順位1番(=ROW(A1))の行が上から何番目にあるかを取得し、その位置にあるB列の値を取得しています。
下方にコピーすることで優先順位2,3…番目の値を取得し、右方にコピーすることでC列,D列の値を取得します。
作業列を使わない方法
まずF3セルに次の式を入力し、F9セルまでフィルコピーしています。

F3セル(F9セルまでフィルコピー)
=LARGE(B$3:B$9,ROW(A1))
最初の(2段階で求める)例と同様ですが関数をLARGE関数としているので、1番目(ROW(A1))に大きい数値が抽出されます。コピーに伴い式中の「ROW(A1)」がF4セルでは「ROW(A2)」、F5セルでは「ROW(A3)」…のように書き換えられ、大きい順に2番目、3番目…の数値が得られます。
データでは2位タイ(点数=85)が3人いますが3番目、4番目という指定に対しても85という数値が得られます。
そしてG3セルに次のような式を入力し、G9セルまでフィルコピー、さらにH9セルまでフィルコピーした様子です。
得点が重複する行であっても、名前と所属は同じにはならず異なるもの(上から順に取得)になっていることがわかります。

G3セル(G9セルまで、さらにH9セルまでフィルコピー)
=INDEX(C:C, SMALL(INDEX(($B$3:$B$9=$F3)*ROW($B$3:$B$9),0), SUMPRODUCT(($B$3:$B$9<>$F3)*1)+COUNTIF($F$3:$F3,$F3)) )
Alt+Enterで折り返しています。2行目と3行目がINDEX関数の第2引数(○行目を抽出)となっています。
INDEX関数を使いC列から値を抽出していますが、何行目を抽出するかが問題です。ここでは「($B$3:$B$9=$F3)*ROW($B$3:B$9)」によりB3:B9の7つの値を、0(F3セルの値に一致しない場合)またはその行番号(F3セルの値に一致する場合)に変換した配列を得ています。ここでは{0;0;0;0;0;8;0}の配列(以下配列aとします)が得られます。
一方で「SUMPRODUCT(($B$3:$B$9<>$F3)*1)+COUNTIF($F$3:$F3,$F3)」は「『F3セルの値に該当しない値の数』(つまり配列a中の0の数)に、『それまで(式が入っている行まで)に現れたF列の値の回数』を足した数値」が得られます。ここでは6+1=7が得られます。
SMALL関数により配列a中の7番目に大きい値つまり8を取得し、INDEX関数によりC8セルの値つまり「二階堂」が抽出されます。
スピル機能があるバージョンだとかなり簡単にできそうな式ですが、ないバージョンだとSMALL関数を意図通りに機能させるのが難しくかなり長い式となっています。なおSMALL関数内のINDEX関数が無駄に見えますが、これがないとスピルのないバージョンではエラーになります。