みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
よろしくお願いします。
FileMaker17です。
ひとつのフィールドに改行区切りでテキストが入っています。
ユニークな値だけのリストにしたいのですが、
改行だけの行をなくして詰める部分がうまくいきません。
Apple
Apple
Orange
KIWI
grape
↓
APPLE
ORANGE
KIWI
GRAPE
現在はこのような式ですが、どのようにすればよいでしょうか。
Let ( [
X = TrimAll ( Upper ( RomanHankaku ( Self ) ); 0; 3 );
X = UniqueValues ( X )
];
X
)
Offline
Substitute ( Trim ( Substitute ( SortValues ( text ) ; ¶ ; " " ) ) ; " " ; ¶ )
でとりあえずは空行は取りされます。各行の中にスペースが含まれているのでしたら、それを | などに置き換えておき、あとで元に戻します。
項目の順を変えてはいけないのでしたら、さらに、
FilterValues ( text ; Substitute ( Trim ( Substitute ( SortValues ( text ) ;[ " " ; "|" ];[ ¶ ; " " ]) ) ;[ " " ; ¶ ];[ "|" ; " " ]) )
としますが、最後に改行が付加されます。
Offline
結構、UniqueValues関数 の「空行」除去は面倒なので、
いっそ昔ながらのループ式が意外とロジック的には単純明快かも?
Let([
$lst=テキスト;
$i=0;
$res="";
$FNC="Case($i>PatternCount($lst;\¶); $res;
Let([
$i=$i+1;
#itm=GetValue($lst; $i);
#add=Choose(Length(FilterValues($res;#itm)); #itm);
$res=List($res; #add)
]; Evaluate($FNC))
)"
];
Evaluate($FNC)
)
【補足】
UniqueValues関数の結果から「空行」除去する考えの式も簡単でしたので補足します。
Substitute(
Char(8203)& UniqueValues(テキスト) &Char(8203)
; ["¶¶"; ¶]
; [Char(8203)&¶; ""]
; [¶&Char(8203); ""]
; [Char(8203); ""]
)
Last edited by Hiro (2019-06-18 14:04:07)
Offline
Let (
t = UniqueValues ( ¶ & text ) ;
Middle ( t ; 2 ; Length ( t ) - 2 )
)
がシンプルでしょう。
Last edited by Shin (2019-06-18 14:39:57)
Offline
>#4
嗚呼、そうか!御意!
「重複行は先出ユニーク行に移動統合される」仕様を応用できますネ。
Offline
思っていたよりも難解でびっくりしました。
複雑な考え方をしないといけないのですね。
とても勉強になります。
Shin様、Hiro様、ありがとうございました。
Offline
分かり易さよりシンプルさを優先するなら、
こんなギミックな式でも良い?
Substitute(¶ & UniqueValues(¶ & テキスト); [¶&¶; ""])
Offline
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 513.48 KiB (Peak: 518.02 KiB) ]