みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもお世話になります。
左から1文字目が数字なら削除するには、どうすればいいでしょうか?
現在、Substitute ( 大項目名 ;Filter ( 大項目名;"1234567890");"")
としてたのですが、2文字目に数字が来た場合も消えてしまい、
Left関数をいじってみたのですが、場所が悪いのか、結果が出ません。
Offline
Middle(大項目名; 1+(Filter("1234567890";Left(大項目名;1))<>""); Length(大項目名))
Offline
Hiroさん、ありがとうございます。
私の頭では、全くもって何故そうなるのか?理解できませんが、解決しました。
じっくり紐解いてみたいと思います。
ありがとうございました!
Offline
> 私の頭では、全くもって何故そうなるのか?理解できませんが、
論理式の計算結果が、真は1、偽は0を返すのを利用し、
Middle関数の先頭文字位置を調節しています。
変数を使って、元の1行式を見易く書き直せば、
Let(
[
テキスト=大項目名フィールド;
先頭文字位置=1+(Filter("1234567890";Left(テキスト;1))<>""); //(先頭文字が数字なら、1を足す)
文字数=Length(テキスト)
];
Middle(テキスト; 先頭文字位置; 文字数)
)
Offline
Hiroさん、解説をありがとうございます。
なんとなく、されていることは理解はできそうですが、Left(テキスト;1))<>の<>が理解できません。
初めて見る式なのですが、どういった働きをするものなのでしょうか?
しかしパッとこういう式を作れるのは凄いですね。
関数を複数掛け合わせた式を作るのが苦手なので、もっと勉強します!
ありがとうございます。
Offline
「<>」は「≠」のことで、旧字体の不等号演算子です。
直接タイプする時は、旧字体「<>」の方が楽なので使っています。
以下の式は全て、問『テキストの先頭文字は数字か?』で、真は1、偽は0を返します。
・ Filter("1234567890";Left(テキスト;1)) <> ""
||
・ Filter("1234567890";Left(テキスト;1)) ≠ ""
||
・ If ( Filter("1234567890";Left(テキスト;1)) ≠ "" ; 1; 0)
Last edited by Hiro (2017-07-05 21:51:49)
Offline
Replace ( テキスト ; 1 ; Filter("1234567890";Left(テキスト;1)) ≠ "" ; "" )
も面白い式ですよ。
Offline
Hiroさん、ありがとうございます。
ぐるぐると悩みましたが、やっと理解できました。
Filter("1234567890";Left(テキスト;1)) <> ""
は、
テキスト一文字目が数字 <> "" (空白)が違う場合、1という意味なのですね。
つまり、数字が一文字目にあった場合は1になるので、二文字目からMiddleで抜き取るということですね!
""ってなんだとぐるぐるしてましたが、やっと理解できました。
しかし解ったからといって瞬時には出て来そうにないので、いろんなパターンを試してみたいと思います。
勉強になりました。
Shinさん、ありがとうございます。
違う関数ですが、考え方は同じですね!理解できました。
Offline
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 558.2 KiB (Peak: 582.1 KiB) ]