みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FMP13adv Macです。
IDのリストを改行区切りで取り出しました。
(例: 12¶84¶950¶39¶10¶49¶50)
その中から指定したIDを除外したリストが作りたいです。
(例: 84¶50¶39 を除外)
Filterで除外されたリストはどう取り出したらいいでしょうか?
Offline
Substituteで指定したものを空白にしたらいいのかな?
やってみます。
Offline
Substituteを利用した、所謂、逆FilterValues(元リスト;除去リスト) の式例、
Let([
$prm[1]=元リスト;
$prm[1]=¶ & $prm[1] & ¶;
$prm[2]=除去リスト;
$prm[2]="[\"\¶" & Substitute($prm[2]; [¶; "\¶\";\"\¶\"];[\"\¶"]) & "\¶\";\"\¶\"]";
$prm[2]="Substitute($prm[1];" & $prm[2] & ")";
$res=Evaluate($prm[2]);
$res="\"" & Substitute($res;[¶;"\";\""]) & "\";\"\"";
$res="List(" & $res & ")"
];
Evaluate($res)
)
Offline
Substituteそのままではダメですよ。
リレーションで除外できたら、それをListしたら簡単そう?
Offline
advancedならカスタム関数を使うのが良いでしょう。
関数名 ListDelete
引数1 値一覧
引数2 削除値
式
Let ( [
valueList = 値一覧 ;
removeList = 削除値 ;
r = GetValue ( removeList ; ValueCount ( removeList ) ) ;
l = Substitute ( ¶ & ValueList & ¶ ; ¶ & r & ¶ ; ¶ ) ;
l = Middle ( l ; 2 ; Length ( l ) - 2 )
] ;
Case (
valueList <> l ; ListDelete ( l ; removeList ) ;
valueList = l and ValueCount ( removeList ) > 1 ; ListDelete ( l ; LeftValues ( removeList ; ValueCount ( removeList ) - 1 ) ) ;
l )
)ListDelete ( "12¶84¶950¶39¶10¶49¶50" ; "84¶50¶39" )
とすればご希望の結果が得られます。
Hiroさん、旅人さん、ありがとうございます。
FilterValues の逆なので、簡単に計算式で除外できるかと思ったのですが、うまくいかないものですね。
Hiroさんの式が理解できないのですが、
$prm[2]の部分は何をやっているのでしょうか?
旅人さん、計算式が複雑なので、リレーションでリストを作り直すアプローチも考えてみます。
ありがとうございます。
Offline
barikanさん、ありがとうございます。
カスタム関数は慣れていなくて頭に浮かびませんでした。
再帰処理ができるんですね。
思ったような処理ができました。
ありがとうございました。
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 553.53 KiB (Peak: 581.36 KiB) ]