どこまでトライされていますでしょうか。
それも含めて書いていただくとよいとおもいます。
まだこれから着手ということなら、
これだけだとアレですので、考え方をメモしてみます。
トライしてみてください。
まずは、地道に繰り返しを実行する方法です。
・room とnameの列を別シートにコピーしたうえで、
「データ」の「重複の削除」を使えば、患者名の一覧は、できます。
・時刻の一覧は、手作業で作成しておきます。
・各行について、
・nameをもとに、それが書き込み先シートの何行目かをApplication.Matchを使って
求めます。
・timeも、時刻行の何列目にあたるかを Application.Matchを使って求めます。
・それで、書き込み先のセルが決まりますから、そこに担当者を書き込みます。
・この作業を、最終行まで繰り返せばOKです。
--------------------------
変則技として、ピボットテーブルを使う方法もあるかもしれません。
(1)担当の右の列に担当者の連番を振ります。
room name time 担当 コード
101 田中陽子 9:00 A 1
101 田中陽子 11:00 B 2
101 田中陽子 15:00 C 3
102 安倍太郎 10:00 D 4
102 安倍太郎 11:00 E 5
102 安倍太郎 12:00 F 6
(2)こうしておいて、ピボットテーブルを使うと、
下記のような表ができあがります。
合計 / コード time
room name 9時 10時 11時 12時 15時
101 田中陽子 1 2 3
102 安倍太郎 4 5 6
(3)もう一度、担当者番号を担当者名に置換すれば、望みのものになりませんか?
骨格のピボットテーブルは一度作れば、データ変更があれば更新するだけです。
あとは、担当者→担当者コード、その逆の置換マクロを用意すればできそうに思います。
(対応表を作っておいて、VLOOKUPで引いてこれると思います)