みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Excelのレコードのフォルダーに A+Bと記載されているとします。
Filemakerにインポートする際にフォルダーにチェックボックスセットでA,B,C,Dの値がある場合に複数の入力を同時に入力を可能にしたいです。
AのみであればLelfWord関数を使用してチェックボックスAにチェックをつけることができますが、A,B同時に複数のレコードチェックができなくて。
どなたかご指導ください。
よろしくお願いいたします。
Offline
区切り文字を改行(¶)に置き換えればいいです。
Offline
フォルダーじゃなくセルですよね?フィールド?
インポート先のフィールドに計算値自動入力(既存値を置き換える)で
Substitute ( Self ; "+" ; ¶ )
としておけばいいってことですね。
すみません返事遅くなって。
最終的には
1-A、2-B・・・
に変換して
A,B,Cのチェックボックスにチェックが入るようにしたいですが何が間違っていますか。
これでは動きません。
フィールドの値には1+2
が入っていた場合
A、Bにチェックがつくようにしたいです。
Let([
Substitute ( Self ; "+" ; ¶)
];
Case ( Self= "1"; A" ;
Self= "2"; "B" ;
Self = "3"; "C" ;
Self= "4"; "D" ;
Self= "5"; "E" ;
Self = "6"; "F" ;
Self = "7"; "G" ;
Self = "8"; "H" ;
Self = "9"; "I" ;
Self = "10"; "J ;
Self = "11"; "K" ;
Self = "12"; "L";
)
よろしくお願いいたします。
Offline
Letの[]の中は代入文を書かないといけません。
変数名=計算式
この場合置換した後は複数の値が改行区切りで入っているので、Caseで分岐してもだめです。
Substitueで置換します。
なので結局Letは不要で関数はSubstitueだけということになります。
Substitute() でやると結構長くなるので、
While (
[
tx0 = Substitute ( self ; "+" ; ¶ ) ;
tx1 = "" ;
pos = ValueCount ( tx0 )
] ;
pos ;
[
cha = GetValue ( tx0 ; pos ) ;
tx1 = List ( Char ( Code ( "A" ) + cha - 1 ) ; tx1 ) ;
pos = pos - 1
] ;
tx1
)それと別に、"+" を改行へ置き換えておくだけで、値一覧で処理する作例のサンプルです。表示だけでいいのでしたら、これが一番シンプルかも。
https://www.dropbox.com/s/okscc155itxtf … 2.zip?dl=0
Last edited by Shin (2022-12-05 13:24:40)
Offline
himadaneeさんありがとうございます。
Offline
Shinさん
いつもありがとうございます。
再度チャレンジしてやってみます。
Offline
Shiさん
サンプルファイルを確認しましたが、計算がよくわかりません。
<関数がわかりません>
と出ていますがWhile 関数なのですか。
またテキストを当方のフィールド名に変更するとOKサインが出ないです。
Offline
それともう一つですが、今回Excelで入力されている値からのインポートでのチェックボックスの入力の予定ですが、これであれば次Filemakerで再修正使用としても修正できないのは少し都合が悪いです。
すみませんがもう少しお願いいたします。
Offline
While関数はFM18からですが、それ以前のバージョンですか?
そうなんですね。当方はFM17です。
Offline
ベタベタですが、分かりやすく、、
Substitute ( Self ; [ "+" ; ¶ ] ; [ 12 ; "L"] ; [ 11 ; "K"] ; [ 10 ; "J"]・・・・・ ; [ 1 ; "A"]
桁数の多い順に処理しないとだめです。
Offline
インポート後に修正が必要ならばサンプルファイルの様な値一覧を使うのが簡単でしょう。
Last edited by Shin (2022-12-02 00:13:20)
Offline
Shinさん サンプルファイルにあるWhile関数は使用しなくても値一覧を作成すれば大丈夫なのでしょうか。
Offline
値一覧の方は、while 関数と別方法です。while 関数が使えなくても、動いているでしょ。
Offline
Shinさん
ありがとうございます。
これがないと動かないと勘違いしておりました。
申し訳ございません。
Offline
チポさん
ありがとうございます。
とても参考になりました。
ただ最終的にA-Lのあとに文字列が並ぶ予定ですがその文字列に数字が入ると変換されてしまいますよね。
例えば以下のような計算式を挿入すると
Substitute ( Trim ( RomanHankaku ( Self ) ) ; ["+"; ¶] ;
[12; "12:L" ];
[11; "11:K" ];
[10; "10:J" ];
[9; "9:I"];
[8; "8:H" ];
[7; "7:G" ];
[6; "6:F" ];
[5; "5:E" ];
[4; "4:D" ];
[3; "3:C"];
[2; "2:B" ];
[1; "1:A"]
)
6+10
は
6:F
1:A0:J
になってしまいますよね。
Offline
最初の質問と内容が全然違いますよ。
また、「最終的にA-Lのあとに文字列が並ぶ」「Substitute ( ... ; [12; "12:L" ]; ...」という説明も矛盾しています。
Offline
最初の質問ではExcelで「A+B」だったのが、途中から「1+2」を「AとBにチェック」に変わって、最後には「1+2」を「1:Aと2:B」に変換しようとしてますが、何をしたいんでしょうか。
FMでの質問なのでExcelのデータは既にあって変更できないと思ってましたけど、A+Bで入れてるのか1+2で入れてるのか、どっちなんですか?
これからデータを作るのでどっちでもできるなら、無駄に変換が必要ないようにExcel側の入力方法から考えた方がいいでしょう。
ちゃんと実際にやりたいことを説明しないと、無駄なやり取りばかり増えていつまでたっても解決しませんよ。
そうでしたね。説明不足ですみませんでした。
Excelから変換する値が、1-12の数値で並んでいて、その内容が1:文字列A 2:文字列B...です。
それをFilemakerでは最初は文字列(A.B.C...)でしたが、後日上司からExcelと関連を持たすため、検索しやすくするためにレコードが1:文字列A 2:文字列B...にできないかと言われました。
またExcelでは内容が1+10、1+Zなど入っているため(Zとは今回の値一覧以外の値)うまく連携をできるようにしたいため最初の内容から徐々に変更点が加わっています。
本当に申し訳ございません。
Offline
数と文字列では計算式が変わるとは知りませんでした。
そのため最初は例としてA+B+Cとしておりましたが、実際は1+2+3です。
またExcelは入力の統一性がなく半角、全角ごちゃまぜです。
そのため、いろいろ試行錯誤しても自動変換されない状態で悩んでいます。
Offline
最初からその説明がよかったですね。。
> Excelは入力の統一性がなく半角、全角ごちゃまぜです
これは、FMですべて半角にできます。
別テーブルで、数値と対応するテキストの組み合わせのレコードを作って、
リレーションで持ってくればいいのでは。
Offline
> Excelと関連を持たすため、検索しやすくするためにレコードが1:文字列A 2:文字列B...にできないか
FM側で、文字列の部分一致で検索することはありますか。
なければ、サンプルの値一覧の設定を変更するだけでいいです。
https://www.dropbox.com/s/okscc155itxtf … 2.zip?dl=0
Offline
基本的にはないです。
部署のExcelユーザーがFilemakerの操作をする際に1:文字列A 2:文字列B...を記憶しているためもし検索する際にレコード内に1を入れたら検索できるようにしたいと思います。
ただ1で検索すると10,11、12も引っかかるので完全一致にしないといけませんが。
Offline
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 617.42 KiB (Peak: 634.33 KiB) ]