Google Spread Sheetに出力された会話ログから特定のワードをキーにその直前の内容を抽出したいです


GoogleSpreadSheetに出力したチャットの会話ログから、特定のワードが表示された直前の会話数件を抽出したいです。  
HもしくはJ列をキーに、and条件で同一IDで遡って2〜3列を抽出するようなイメージでしたが、途中で違うIDの発言が挟まる可能性があります。  
どうぞよろしくお願いいたします。

背景  
・特定の発言が表示される（選択されるに至った）きっかけとなった会話の流れを追跡したい

条件  
・特定の発言はJ列（flow）の特定のflowが表示されたflow名、その場合H列とJ列は毎回同じ(H≠J)  
・特定の発言の行と直前２〜3発言を抽出  
・IDが同一のユーザー

・補足  
・ID=同一セッション（24時間）のユーザー固有値  
・flow=回答への選択肢が含まれた階層化された誘導会話

A列（date）:date  
B列（ID）:ユーザー固有の識別子  
C列〜E列(info):個別情報  
F列（talker）：bot=ユーザーの発言・ｆlow内の選択肢を選んだ後の最終表示会話の場合、flow=flowを表示した場合  
G列（info）：個別情報  
H列（query）：発言内容  
J列（card）：表示された会話card名

例

A | B | C | D | E | F | G | H | I | J  
---|---|---|---|---|---|---|---|---|---  
date | ID | info1 | info2 | info3 | talker | info4 | query | blank | card  
2023/1/30 10:00 | 1d8c7199601aed4329343a25 | aaa | bbb | ccc | flow | ddd |
直前の会話3 |  | flowの選択肢の場合空白  
2023/1/30 10:01 | 1d8c7199601aed4329343a25 | aaa | bbb | ccc | bot | ddd |
直前の会話2 |  | 会話card名  
2023/1/30 10:03 | 1d8c7199601aed4329343a25 | aaa | bbb | ccc | bot | ddd |
直前の会話1 |  | 会話card名  
2023/1/30 10:04 | 1d8c7199601aed4329343a25 | aaa | bbb | ccc | bot | ddd |
【特定の選択肢】 |  | 【特定の表示発言】  
2023/1/30 10:10 | 29348c71993a251d3a251d43 | aaa | bbb | ccc | bot | ddd |
特定の選択肢b |  | その他会話  
2023/1/30 10:13 | 29348c71993a251d3a251d43 | aaa | bbb | ccc | bot | ddd |
特定の選択肢a |  | 特定の表示発言  
2023/1/30 10:16 | ed43a21d9968c7101a532934 | aaa | bbb | ccc | flow | ddd |
直前の会話C |  | （flowの選択肢の場合空白）  
2023/1/30 10:17 | ed43a21d9968c7101a532934 | aaa | bbb | ccc | flow | ddd |
直前の会話B |  | （flowの選択肢の場合空白）  
2023/1/30 10:20 | 29348c71993a251d3a251d43 | aaa | bbb | ccc | bot | ddd |
【特定の選択肢】 |  | 【特定の表示発言】  
2023/1/30 10:21 | ed43a21d9968c7101a532934 | aaa | bbb | ccc | bot | ddd |
直前の会話A |  | その他会話  
2023/1/30 10:22 | ed43a21d9968c7101a532934 | aaa | bbb | ccc | bot | ddd |
【特定の選択肢】 |  | 【特定の表示発言】

