みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
フィールドの文字列の中に例えば ABC という文字が含まれているかどうかを判断する計算式はどう作ればいいでしょう。
FM13Proです。
Offline
PatternCount ( フィールド ; "ABC" )
Position ( フィールド ; "ABC" ; 1 ; 1 )
など。
PatternCount
http://www.filemaker.com/help/13/fmp/ja … 33.77.html
Position
http://www.filemaker.com/help/13/fmp/ja … 33.78.html
Offline
PattternCount
Position
は大文字、小文字を区別しません。
Filter関数
は区別します。
IsEmpty ( Filter ( テスト ; "ABC" ) )
の真偽で判定出来ますね。
Offline
Filter関数は文字列の判定には不向きなので、
Substitute関数を工夫して判別するとか、かな。
Offline
みなさんありがとうございます。
どれもうまくいきません。
もう少し詳しくいいます。
Aというフィールドの文字列が”XYZABCDEF"であるとすると
Bというフィールドを”ABC”としたいわけです。
AフィールドにABCが含まれなければ、Bフィールドは空白というものです。
簡単かと思ったのですが、意外と難解で困っています。
Offline
質問します。
・文字は完全一致(大小文字など)で区別するか、しないか、のどちらですか?
・「ABC」3字の文字列単位での含有判定ですか、「A,B,C」3文字個々での含有判定ですか、のどちらですか?
・「ABC」が2組以上含まれた場合には、結果は何を返しますか?
Last edited by Hiro (2017-08-07 22:07:32)
Offline
文字列ではなく文字の判定なのですね......失礼しました。
うまくいかないというのはどの部分がうまくいかないのですか?
もう少し具体的にいま何をやっていてどこで詰まっているのか詳しく書いてみては如何でしょう。
Offline
いや、文字列かも、
とすると
Filter関数
ではダメですね。
として、
大文字・小文字を区別するのなら、HIroさんが書かれている
Substitute関数
で「ABC」を他の文字に置き換えて判定するのがいいでしょうかね。
Offline
こんな感じでイケそうな...。
Let([
¢target=”XYZABCDEF"
; ¢search="ABC"
; ¢val=Substitute ( ¢target ; ¢search ; ¶ & ¢search & ¶ )
; ¢Result=FilterValues ( ¢val ; ¢search )
];
¢Result
)
Offline
スレ主さんの回答無いけど、
仮に、完全一致の文字列比較で、
・照合文字列のすべてを改行一覧で返すなら→#9qb_dpさん式
・照合キーワードの1文字列だけ返すなら、#9qb_dpさん式で、
FilterValues ( ¢val ; ¢search ) → ( ¢search ; ¢val )
【補足訂正】
FilterValues結果は無用な末尾改行が付記されるので、
除去処理が必要でしたネ。
・FilterValues ( ¢search ; ¢val )
↓
・Substitute(FilterValues ( ¢search ; ¢val ); [¶;""])
Last edited by Hiro (2017-08-08 18:11:01)
Offline
ありがとうございます。客先から送られてくる注文コードです。
注文コードは48項目のCSVに変換して受信しています。
その46項目の中の32文字の中に国を表すアルファベットが含まれています。
特定の国を判定したいわけです。
だいたいの項目は注文番号とか納期とかその1項目で1つ情報なのですが、この項目だけいろいろなコードが混在しているわけです。
何文字目がなんのデータであるかが規定されていればいいのですが、他のデータの桁数が固定されていないので、何文字目にくるかがわかりません。
Offline
#6の質問項目に正確に答えてくれていないのは残念ですが、
#11のコメント内容から再度推論するに、
・第46項目内の32字の文字列内に指定国の文字列コード(1件)が含まれているを判別、
・含まれる時は、その文字列コードを代入、
・判別は大小文字などを区別しない曖昧照合、
と解釈したときの式例、
Case(PatternCount("32字の文字列"; "指定国の文字列コード"); "指定国の文字列コード")
Offline
ありがとうございます。
確かに32文字の文字列をPatternCountで判定すると期待どおりになるのですが、
この32文字の文字列は、フィールドに格納されているわけで、
Case(PatternCount(32字の文字列のフィールド名; "指定国の文字列コード"); "指定国の文字列コード")
とすると、うまくいきません。
Offline
追記
32文字の文字列フィールドは、テキストフィールドです。
なぜ、うまくいかないのかわかりません。
Offline
( ꒪⌓꒪)ンナアホな......
#5 によれば計算式を設定するのはフィールドBで、
フィールドAが「32字の文字列のフィールド」ですよね?
期待通りの動きをしない際の「32字の文字列のフィールド」の値には "指定国の文字列コード" とやらは含まれているのでしょうか?
Offline
わかりました。
国コードが全角英字でした。
気が付きませんでした。おはずかしい。
データに全角英字を使うなんて・・・・。
Offline
Pages: 1
[ Generated in 0.008 seconds, 10 queries executed - Memory usage: 533.03 KiB (Peak: 553.94 KiB) ]