みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもお世話になります。
FileMaker 15 Windows 7 です。
タイトルにありますとおり,データAとデータBとを比較し,
どの部分が違うかのハイライト(マーカ)を表示して分かりやすくしたいのですが,
可能でしょうか?
データA データB
りんご赤いな りんだ赤いな
あいうえお あいうえおー
この場合,データAでは「ご」がハイライト,
データBでは「だ」と「-」がハイライトされる感じです。
検索したものをハイライトさせるのはできたのですが,比較となると思いつきません。
そもそもできないのでしょうか?
よろしくお願いいたします。
Offline
データA データB
りんご赤いな りんんだ赤いな
の時は、どの様にしますか。
Offline
Shinさま
コメントありがとうございます。
データA データB
りんご赤いな りんんだ赤いな
の時は、どの様にしますか。
データAは「ご」、
データBでは「んだ」として、
ハイライトになるのが好ましいです。
Offline
・データA が、 りんご赤いな
・テータB が、 りんだ赤いなー
の時、
・結果(一覧リスト)
りんご赤いな
りんだ赤いなー
を得るループ計算式、(※同位置の1文字ごと比較)
Let([
$txt1=データAフィールド;
$txt2=データBフィールド;
$n=Max(Length($txt1);Length($txt2));
$i=0;
$res1="";
$res2="";
$fnc=
"Case($i=$n; List($res1;$res2);
Let([
$i=$i+1;
#chr1=Middle($txt1;$i;1);
#chr2=Middle($txt2;$i;1);
#chr1=Choose(#chr1=#chr2;TextStyleAdd(#chr1;HighlightYellow); #chr1);
#chr2=Choose(#chr2=#chr1;TextStyleAdd(#chr2;HighlightYellow); #chr2);
$res1=$res1 & #chr1;
$res2=$res2 & #chr2
]; Evaluate($fnc) )
)"
];
Evaluate($fnc)
)
====================
なお、後出し条件の
・データA が、 りんご赤いな
・テータB が。 りんんだ赤いな
の時、
・結果
りんご赤いな
りんんだ赤いな
一覧を得る式の方はちょっと思いつきません。(※相違位置の不定文字列ごとの比較)
Offline
Hiroさま
コメントありがとうございます。
ファイルメーカーの中身をいじり出してから数年程度の経験ゆえ、
まず、計算式でもループができることに感動しています。
まずは解読ですが、失礼ながらコピペして、実験台に貼り付けたところ
マーカされたことを確認しました。
ありがとうございます。
文字確認なので、後出しの方が理想ではあります。
Offline
後出し条件の
・データA が、 りんご赤いな
・テータB が、 りんんだ赤いな~
の時、
結果、
・データA 、 りんご赤いな
・データB 、 りんんだ赤いな~
※Filter関数を利用して共通文字を抽出せざるを得ないため、文字順が担保されません。
それをマスターに比較するため、データによっては正しい結果は得られません。
【データAの式】
Let([
$txt1=データAフィールド;
$txt2=データBフィールド;
$com=Choose(Length($txt1)>Length($txt2); Filter($txt1;$txt2); Filter($txt2;$txt1));
$i=0;
$j=0;
$res1="";
$fnc=
"Case($i=Length($txt1); $res1;
Let([
$i=$i+1;
$j=$j+1;
#chr=Middle($com;$i;1);
#chr1=Middle($txt1;$j;1);
#chr1=Choose(#chr=#chr1; Let([$i=$i-1];TextStyleAdd(#chr1;HighlightYellow)); #chr1);
$res1=$res1 & #chr1
]; Evaluate($fnc) )
)"
];
Evaluate($fnc)
)
【データBの式】
Let([
$txt1=データAフィールド;
$txt2=データBフィールド;
$com=Choose(Length($txt1)>Length($txt2); Filter($txt1;$txt2); Filter($txt2;$txt1));
$i=0;
$res2="";
$fnc=
"Case($i=Length($txt2); $res2;
Let([
$i=$i+1;
$k=$k+1;
#chr=Middle($com;$i;1);
#chr2=Middle($txt2;$k;1);
#chr2=Choose(#chr=#chr2; Let([$i=$i-1];TextStyleAdd(#chr2;HighlightYellow)); #chr2);
$res2=$res2 & #chr2
]; Evaluate($fnc) )
)"
];
Evaluate($fnc)
)
Last edited by Hiro (2018-03-15 00:27:43)
Offline
その条件でしたら、FM では無理でしょう。ワードプロッセサーで、その様な機能がありますので、そちらで検討されれば。
Offline
まとめての返信ですみません。
Hiroさま
いろいろ考えてくださりありがとうございます。
データによって結果が変わってしまうのはまずいので,諦めます。。
ただ,この式自体はほかで使えそうなので,ほかで検討しようと思います。
Shinさま
ワードにそのような機能があることは知っていましたが,
もう少し手軽にできないかと提案があり今回に至りました。
でも,FileMakerでもできないものもあるということで,ほかを当たってみようと
思います。
お二人ともありがとうございました。
Offline
「正規表現」を利用するとFMでも解決できるでしょう。
文章処理が多いのであれば、無料のプラグインもありますので、
「正規表現」プラグインの導入をお勧めします。
Offline
Hiroさま
プラグインもまた未知の世界です。
正規表現の名とともに調べてみたいと思います。
ありがとうございます。
Offline
Pages: 1
[ Generated in 0.008 seconds, 12 queries executed - Memory usage: 569.53 KiB (Peak: 586.07 KiB) ]