みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもお世話になっております。
以下のようなリストから0の行を取り除くにはどのようにすれば良いでしょうか。
0
10
2
3
0
4
0
↓
10
2
3
4
Last edited by fpck (2024-02-09 15:01:17)
Offline
書かれた1行が1レコードで、
対象レコードにしたいのなら、検索するだけでは。
Offline
それが、テキスト列なら、
Subatirut ( text ; "¶0¶" ; "¶" )
Offline
テキスト列ならそれじゃすまないでしょう。
01,002
の様なのがないことを条件にして、
Replace ( Substitute ( ¶ & テキスト ; ["¶0" ; "" ] ; [ "¶¶" ; "¶"] ) ; 1 ; 1 ; "" )
こんなのでは。。
Offline
01 001 などがあってもいい式
Let (
[
c1 = Char ( 1 ) ;
c2 = Char ( 2 )
] ;
Subatirut ( c2 & text & c1;[ ¶ ; c1 & c2 ];[ c2 & "0" & c1 ; "" ];[ c1 & c2 ; ¶ ];[ c1 ; "" ];[ c2 ; "" ])
)
Offline
つまり両側に改行を付ければいいわけですよね。置換で0を取り除いて、つけた改行を取る。
Let([
t=List(0;10;0;20;"02";"003";100;1;2);
s= Substitute ( ¶ & t & ¶ ; "¶0¶" ; ¶ )
];
Middle(s;2;Length(s)-2)
)
himadaneeさん、0,0 となった時に、2番目がとれないです(だから#3がダメ)
Substitute ( ¶ & t & ¶ ;[ "¶0¶" ; ¶ ];[ "¶0¶" ; ¶ ])
だとうまくいくかも
Last edited by Shin (2024-02-14 13:25:06)
Offline
みなさんありがとうございます。
#5でうまくいきました。
Offline
ああそっか、区切り文字が兼用されるとだめなんですね。
#7でも、繰り返しが多いとダメですね
Offline
これでいいのかな。一旦改行を2倍にして、元に戻す。削除は前後の区切りごと消すことになる。
#5は前後を別の文字にしているわけですね。それでMiddleを使わずに済んでますね。
Let([
t=List(0;10;0;0;0;0;20;"02";"003";100;1;2);
t= ¶ & t & ¶ ;
s= Substitute ( t ; [ ¶ ; ¶ & ¶ ] ; [ "¶0¶" ; "" ] ; [ ¶ & ¶ ; ¶ ] )
];
Middle(s;2;Length(s)-2)
)
Pages: 1
[ Generated in 0.012 seconds, 9 queries executed - Memory usage: 516.67 KiB (Peak: 521.21 KiB) ]