fc2ブログ














しばらくお休みします。

多くの方に訪問いただいています、FileMakerで機器台帳。
よりよいコンテンツ作成のためしばらくの間お休みいたします。

ご不便をおかけいたしますがご容赦くださいますようお願い申し上げます。
スポンサーサイト



[ 2022/05/05 22:24 ] 機器台帳 | TB(0) | CM(0)

新しくブログを開設しました

長らくFC2を使い続けてきました。
しかしながら、自身のドメインにてブログをオープンしました。
内容は従来通りFileMakerにかんする有益な情報を発信していきます。どうぞ下記リンク先をブックマーク願います🙏

CE x FileMaker のこれどうなのよ

今後ともみなさんのお役に立てるよう発信していきます!
どうぞよろしくお願いいたします!
[ 2022/04/14 07:51 ] ファイルメーカー | TB(0) | CM(0)

ValueCount(FilterValues(  を考える 3

いや〜どうも。

ここで、再び疑問1へ話を戻す。

疑問1.FilterValues(”1.餃子¶2.炒飯¶3.回鍋肉” ;”1.餃子" )の”1.餃子¶2.炒飯¶3.回鍋肉”をどうやって作るか?

ここまで出来ていれば話は簡単である。
値一覧の Choices =”1.餃子¶2.炒飯¶3.回鍋肉” なのだから。
更にアンケート :: Choicesは値一覧のChoicesそのもの(上図参照)なので

FilterValues(”1.餃子¶2.炒飯¶3.回鍋肉” ;”1.餃子" )は
FilterValues(Choices ;”1.餃子" )と置き換えられる。

ただし、ここで注意!
実際にはアンケート :: Choicesの値は”1.餃子¶2.炒飯¶3.回鍋肉” ではなく、各々に割り当てられた値である。
つまり、テキスト 1-1、1-2、1-3 となる。

つづいて、
疑問2.FilterValues(Valuelist(Get(ファイル名) ; "Choises") ;”1.餃子" )の2番目の引数”1.餃子”をどうやって作るか?

前述の注意にあるよう 1.餃子 =  "1-1" である。(1-1ではなく1_1にした方が良いね)
なので、1.餃子を取得するとは”1-1”を求めることと置き変えられる。

まず、下図を見て欲しい。


▼1-1
スクリーンショット 11

上図右側に集計用のタイトルと0 or 1を格納するフィールドを用意した。
フィールドChoicesNameは選択肢の番号1-1を、CountChoicesは 0 or 1で選択されているかどうかを示す。
CountChoicesを積み上げていけば集計が可能となる。

では、それぞれのフィールド設定を見てみよう。

▼追加フィールド
スクリーンショット 12

▼ChoicesName
スクリーンショット 13

▼CountChoices
スクリーンショット 14


ChoicesNameに注目。繰り返しフィールドになっているので戻り値は"1-1","1-2","1-3"となる。
次にCountChoices注目。FilterValues( Choices[1] ; ...)の[1]はExtendの意味合い。これはChoicesNameが繰り返しなのでExtendが必要となる。

話を元に戻す。
疑問2の "1.餃子"をどうやって作るか?はChoicesNameで拾ってくることになる。

FilterValues(Choices[1] ; "ChoisesName")
をわかりやすくすると1-1、1-2、1-3の全てにチェックが付いている(選択している)場合、
ChoiceName[1]にはFilterValues( "1-1¶1-2¶1-3";"1-1" )= "1-1"
ChoiceName[2]にはFilterValues( "1-1¶1-2¶1-3";"1-2" )= "1-2"
ChoiceName[3]にはFilterValues( "1-1¶1-2¶1-3";"1-3" )= "1-3"
とChoicesNameの繰り返し位置に応じて第2引数が変化する計算式が成り立つ。


ここで、元々求めたいのは
ValueCount()で 0 or 1 なのだから、
ValueCount(FilterValues(Choices[1] ; "ChoisesName") )で、FilterValues(Choices[1] ; "ChoisesName")の結果が"1-1"であろうと"1-2"であろうと、
ValueCount(FilterValues(Choices[1] ; "ChoisesName") )の戻り値は 1 となる。

以上 ValueCount(FilterValues( の考察である。

[ 2020/02/03 10:43 ] ValuCount(FilterValue( | TB(0) | CM(2)

ValueCount(FilterValues(  を考える 2

いや〜どうも。



前回の記事に誤りがあったので修正した。ValueCountは引数を二つ持たない。

さて、前回をざっくりまとめると


  • アンケートの集計をしたい

  • FilterValuesの説明と戻り値

  • ValueCountで0 or 1 が求められる

  • である。

今回はもう少し掘り下げていく。

● FilterValues

前回の例を取り上げる。

FilterValues ( "餃子¶炒飯¶回鍋肉" ; "餃子" )

戻り値: 餃子


これは

『改行された文字列 "餃子¶炒飯¶回鍋肉" のうち"餃子" と同じ文字を拾ってきなさい』

ということである。

複数指定も可能で、

FilterValues ( "餃子¶炒飯¶回鍋肉" ; "餃子¶回鍋肉" )

ならば、

戻り値は 餃子¶回鍋肉¶

となる。


● ValueCount

与えられた文字列がいくつあるかカウントしてくる。

例えば、

ValueCount( "餃子¶炒飯¶回鍋肉" )ならば

戻り値は3となる。


以上を踏まえてアンケートを作ってみる。



Q1. 好きな中華料理は(単数回答)

1.餃子 2.炒飯 3.回鍋肉



Q2. 好きなデザートは(複数回答可)

1.杏仁豆腐 2.マンゴープリン 3.胡麻団子





AさんとBさんの二人に回答してもらった結果は以下


Aくん

Q1 1.餃子

Q2 1.杏仁豆腐、2.胡麻団子


Bくん

Q1 1.餃子

Q2 1.杏仁豆腐、2.マンゴープリン



目的はアンケートの集計なので欲しい結果としては、

Q1. 餃子 2票

Q2. 杏仁豆腐2票 マンゴープリン2票 胡麻団子2票

である。


さあ、ここから逆算的に考える。

まずQ1から。

●1を得るためには、

Aさんの回答:ValueCount("1.餃子")= 1

Bさんの回答:ValueCount("1.餃子")= 1

∴ 1 + 1 = 2


●ValueCount("1.餃子")にするためには、

FilterValues(”1.餃子¶2.炒飯¶3.回鍋肉” ;”1.餃子" )= 1.餃子¶



●以上より

ValueCount(FilterValues(”1.餃子¶2.炒飯¶3.回鍋肉” ;”1.餃子" )) = 1

となる。



ここで、疑問。

疑問1.FilterValues(”1.餃子¶2.炒飯¶3.回鍋肉” ;”1.餃子" )の”1.餃子¶2.炒飯¶3.回鍋肉”をどうやって作るか?
疑問2.FilterValues(Valuelist(Get(ファイル名) ; "Choises") ;”1.餃子" )の2番目の引数”1.餃子”をどうやって作るか?


回答の前に、まずはどうやって回答させるか。



回答1の選択肢は

1.餃子 2.炒飯 3.回鍋肉

なの、値一覧から選択させる。



ここからは、実際にFileMakerでやってみる。



▼目標

スクリーンショット 9




  1. テーブル作成

    ▼テーブル

    スクリーンショット 2


  2. フィールド設定


    ▼アンケートのフィールド

    スクリーンショット 7




    ▼質問のフィールド

    スクリーンショット 4


  3. 選択肢作成

    チェックボックスで入力させるため値一覧を定義する。


    1. 選択肢をテーブル質問へ入力しておく



      ▼選択肢の入力

      スクリーンショット 5


    2. 値一覧の定義



      ▼値一覧

      スクリーンショット 6



  4. 選択肢の配置



    ▼テーブルアンケートに選択肢を配置

    スクリーンショット 8


以上で選択肢から選択可能となる。

長くなったのでここまで。
考え過ぎちゃった。
[ 2020/02/02 10:16 ] ValuCount(FilterValue( | TB(0) | CM(0)

Valuecount(FilterValues(  を考える 1

いや〜どうも。


まだまだ、ひよっこですな。
pandas で csv を読み込んで、カンマ区切りを個別データにして csv ファイルとして書き出すとか、columnsの名前を変えるとか、基本的なことが出来てない。やっぱ、実用レベルでどれだけ必要としているかを背負わないとダメですよね。

さてと、今回は『ValueCount(FilterValues( 』を考えるです。
最初に言っときますが、自分のネタではなくパクりです。なので備忘録的に書き記します。

実務ではあまり使わない二つの関数について考える。

1. FilterValue
2. ValueCount

【背景】 アンケートの集計をFileMakerでやってみようと思ったのがきっかけ。
【目的】 アンケートの選択肢が選択されているかどうかを見極める。選択されていれば 1 を、選択されていなければ 0 を戻り値とする。0 or 1 かです。
【方法】 ValueCount ( FilterValues ( 選択肢 ; 選択肢 ) )

まず、FilterValues
FileMakerの説明を載せます。

//////////////////////////////////////////////////////////

FilterValues
フィルタ値で指定した値のみを含むテキスト結果を、フィルタするテキストに入力されている順序で返します。

構文
FilterValues (フィルタするテキスト ; フィルタ値)

引数
フィルタするテキスト - テキスト式またはテキストフィールド
フィルタ値 - 指定されたテキスト内の保持する値

戻り値のデータタイプ
テキスト

説明
値の一覧の説明については、ValueCount 関数を参照してください。
返される各値は改行で終了しているため、一覧を簡単に連結することができます。

メモ
・フィルタ値引数に値が指定されていない場合は、空の文字列が返されます。
・FilterValues 関数では、大文字と小文字は区別されません。

例 1
FilterValues ("Plaid¶Canvas¶Suitcase" ; "Plaid¶Canvas") は「Plaid¶Canvas¶」を返します。

例 2
FilterValues (ValueListItems ("データベース" ; "サイズ") ; "中¶小") は、「データベース」という名前のデータベースファイルに「小¶中¶大」という値を持つ値一覧「サイズ」がある場合に「小¶中¶」を返します。



//////////////////////////////////////////////////////////

さてと、ここでアンケートを考えてみる。

例えば、
設問1 好きなメニューを選んで下さい。(単回答)
  1. 餃子
  2. 炒飯
  3. 回鍋肉


餃子を選んだとする。
ここで、FilterValuesの登場。

FilterValues ( "餃子¶炒飯¶回鍋肉" ; "餃子" )

戻り値: 餃子

になるわけだ。

では、FilterValues ( "餃子¶炒飯¶回鍋肉" ; "杏仁豆腐" )ならばどうだ。
これは、null となる。

更に、 ValueCount 

 ValueCount ( "餃子" ) ならば 戻り値: 1
 ValueCount ( "" ) ならば 戻り値: 0

ということで、ここで 0 or 1 が得られるのだ。

ちなみに、
 ValueCount ( "餃子¶餃子" ) ならば 戻り値: 2



そう、最終的にはこの形にしたいのだ。
 ValueCount ( "餃子" )

今日はここまで。
[ 2020/01/28 21:57 ] ValuCount(FilterValue( | TB(0) | CM(0)