名前の羅列から選択・検索式を生成する為の秀丸マクロ

例えば或る表の或る条件から抽出した人員のデータがあったとします。
それをまったく別の観点から別の表において該当する人員を選択したい場合があります。
例えば具体的に言えば、
学校の生徒名簿.dptに対して、何処町在住の、3年生は誰か? という抽出作業を行ったとします。
その該当する人員のリストで、
今度はまったく別の地元サッカークラブの団員名簿.dptに対して、先程抽出された「何処町在住の、3年生」は誰が居るか?
という事を調べる為にはどうしたらいいか?
私が使っていたMSDOS版の桐では一旦「何処町在住の、3年生」のリストを表ファイル(例えばZANJI.TBL)に書き出して、
地元サッカークラブの団員名簿.dptから、その表に対して今度は選択併合をかけて、目的を達する、
という一旦であれ暫定ファイルを生成する手間がかかりました。

要するにA表で選択した結果について、B表で該当する者を更に選択するという操作です。

DBProでも理屈は一緒なのですが、まぁやろうと思えば選択併合を実行すればある程度は出来ます。けれど、いくつもの表を扱って複雑な環境下ではどうも融通が利きません。
しかしここで私が提案するのは、下記の秀丸マクロを使って、瞬時に選択式を作ってしまい、クリップボードコピーによって、条件選択の式を書く所にペーストしてしまう、という技です。
まず以下のマクロを作って氏名.macとして保存して下さい
top:
	insert "[]";
	left;
	insert "氏名";
	right;
	insert "=\'";
	searchdown "\\n" , regular;
	if( ! result==1 )  goto END;
	insert "\'or";
	right;
goto top;
END:
golineend;
insert "\'";
endmacro;
さ、それで準備完了。

例えば「何処町在住の、3年生」の結果が次のようだったとします。
大橋太郎
安藤次郎
加藤三郎
小林史カ
佐久間義経
曽根頼朝
高野信長
戸沢秀吉

最初に選択された「何処町在住の、3年生」の氏名部分だけをコピーし、秀丸に貼り付けます。

そして

マクロを呼び出します

「氏名.mac」を指定して作動!

すると、図のように、
[氏名]='大橋太郎'or
[氏名]='安藤次郎'or
[氏名]='加藤三郎'or
[氏名]='小林史カ'or
[氏名]='佐久間義経'or
[氏名]='曽根頼朝'or
[氏名]='高野信長'or
[氏名]='戸沢秀吉'or
[氏名]=''
という風に選択式を生成してくれます。勿論式をよく見れば分かる様に、最後に入らない部分が附属しますのでそれは除去します。
要するに必要なのは上記の赤の部分だけなので、末尾の「or[改行][氏名]=''」
[氏名]='戸沢秀吉'or
[氏名]=''
部分以外をクリップボードコピーします。
そして 地元サッカークラブの団員名簿.dptに対して条件選択を実行します。



かんたんに「何処町在住の、3年生」地元サッカークラブの団員名簿.dptの人を抽出出来ました。