見出し画像

FileMakerでExcelのREPT関数を作る

FileMakerの小ネタシリーズです。今回はFileMakerでExcelのREPT関数を作ってみます。

ExcelのREPT関数とは
指定した文字列を指定した回数繰り返した文字列を返す関数

REPT関数の書き方
=REPT("指定文字列",数値)

=REPT("★",5)
返値
★★★★★

REPT関数の使いどころ

・関数の書き方の例のように評価を星の数で表すような場合
・簡易的な棒グラフの代わり
                 ...etc

FileMakerでの実装方法

複数の方法が考えられるので今回は4つ紹介したいと思います。

サンプルファイルを用意したので以下からダウンロードしてご覧ください。

サンプルファイルはこちら

適当に「回数」や「文字列」を変えてみてください。結果1〜4のフィールドが自動的に変わります。以下では結果1〜4それぞれの実装方法を解説します。

方法1:while関数を使用する方法

while関数を使った方法です。繰り返し処理をするなら正攻法だと思います。念のためFileMakerのwhile関数を復習しましょう。
※while関数はVer18以降でないと使えません。

While
条件が真の間にロジックを繰り返してから、結果を返します。
構文
While ([初期変数] ; 条件 ; [ロジック] ; 結果)

while関数を使ってREPT関数をFileMakerのカスタム関数として組み込んでみます。

関数名
  REPT
引数
  myString:指定文字列
  number:数値(回数)
While (
    //初期変数	
    [
        i = 0;
        result=""
    ];

	//終了条件
	i <Number;

	//ロジック
    [
        i= i+1;	
        result = result & myString
    ]

サンプルファイルではこれを「結果1」フィールドに計算式として仕込んであります。

方法2:べき乗とSubstitute()を使用する方法(オススメ)

式が簡単なのでオススメな方法です。これもカスタム関数として組み込んでみます。

関数名
  REPT2
引数
  myString:指定文字列
  number:数値(回数)
Substitute ( 10^ number-1 ; "9" ; myString )

10のべき乗から1を引くと9が並んだ値になります。

例)10^3-1=1000-1=999 9が3つ並んだ文字列が得られる

この「9」をSubstitute関数で指定文字列に置換します。

式が簡単なのでオススメな方法です。

サンプロファイルではこの関数を「結果2」フィールドの計算式に指定してあります。

方法3:再帰関数を使う

カスタム関数を使って再帰関数を作る方法です。Ver18より前ではこの方法が正攻法であったと思います。

関数名
  REPT3
引数
  myString:指定文字列
  number:数値(回数)
If (
    number > 0 ;
    myString & If ( number > 1 ;  REPT3 ( myString ; number - 1) ; "");
    "" 
)

サンプルファイルではこの関数を「結果3」フィールドの計算式に指定してあります。

方法4:スクリプトを使う

スクリプトの繰り返し処理を使う方法です。処理速度的にもあまりオススメではありませんが、カスタム関数もwhile関数も使えない(Advancedでない古いバージョンを使っている等)場合にはこういう方法もあるかなと思います。

指定文字列と数値(回数)をリスト(改行区切りのテキスト)で渡すと、指定回数文字列をつなげて返してくれるスクリプトを作ります。

スクリプト名
  RREPT_by_script
引数
  "指定文字列" & ¶ & 数値(回数)

指定回数だけループして文字列をつなげて結果を返すスクリプトを作ります。

実際に使用する時はレイアウトで数値のフィールドにスクリプトトリガーを仕込みます。これで、数値を変えると自動的に値を変えてくれるようになります。

詳しくはサンプルファイルのレイアウトで確認してみてください。

応用編 評価を★で表示してみよう

応用編として評価を★で表示させる機能を実装してみます。

・数値で0〜5の評価を★で表示する
・評価3ならカラーの★3つとグレーの★2つで表示する

サンプルファイルで「応用編」レイアウトを表示してください。

評価の値を変えるとその値に応じて★の表示が変わります。ウェブサイト等でもよくみられる表現法ですね。

「星表示」フィールドに以下の計算式を仕込んであります。

詳しくはサンプルファイルをご覧ください。

おわりに

FileMakerの小ネタシリーズ

今回はFileMakerでExcelのREPT関数を作ってみました。質問や感想、アドバイス等はコメントでお願いします。

よろしかったら「スキ」を教えてもらえると励みになります。シェアなどもお願いします。

この記事が気に入ったらサポートをしてみませんか?