みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
え〜〜〜とですね
vgnrさんのダウンロードファイルのHiroさんの計算式と
Hiroさんの投稿記事の式に違いがありますね。
オリジナルのHiroさんの式に冒頭の Substitute がないと思う
ダウンロードファイルの Substituteを削除すると
きちんと計算する
これもわたしのも間違い?勘違い?
投稿記事には 冒頭のSubstituteってないんですよね?
Offline
原因は、私の式を忠実に完全再現していない欠落式のためです。
ついでに気になる点をば、
・計算結果はわざわざ非保存にしなくとも、結果保存でも自動更新計算してくれます。
・最終的に計算結果を改行区切りの一覧リストで出すなら、 Substitute書換の2度手間を掛けずに、
式を下記に変更します。 (44-46) → (44¶45¶46)
Let([
//初期設定
$txt=テキスト;
$lst=Substitute($txt; ["/";¶]);
$n=0;
$rsl="";
//メインループ式定義(「/」で区切りのリストにして1行づつ精査する式)
$fnc="Case($n=ValueCount($lst); $rsl;
Let([
$n=$n+1;
$itm=GetValue($lst;$n);
$add=Case(PatternCount($itm;\"-\")=0; $itm;
Let([
$str=Substitute($itm; [\"-\";\"\¶\"]);
$end=GetValue($str;2);
$str=GetValue($str;1);
$res=\"\"
]; Evaluate($sub))
);
$rsl=List($rsl; $add)
]; Evaluate($fnc))
)";
//サブループ式定義(「1-5」を「1¶2¶3¶4¶5」リストに変換する式)
$sub="Case($str*1>$end*1; $res;
Let([
$res=List($res;$str);
$str=$str+1
]; Evaluate($sub))
)"
];
//上記定義したループ式を実行、答を得る
Case(PatternCount($txt;"-"); Evaluate($fnc); $lst)
)
Last edited by Hiro (2017-03-31 20:45:59)
Offline
Hiroさんの式も、しっかり初期設定できています。
6行目の
$rsl="";
が抜けていますよ。
あれ・・・?私も見落としてました。
コピペしたんで間違いないと思ってたんですが
これはHiroさんに失礼しました。
非保存にしたのは、保存結果の残骸がどこかに残っているのかあれこれファイルの設定変更を試した名残ですね・・・
いやあしかしEvaluteとLetは何年たっても苦手です(' ꈊ ')
Offline
え〜〜〜とですね
vgnrさんのダウンロードファイルのHiroさんの計算式と
Hiroさんの投稿記事の式に違いがありますね。オリジナルのHiroさんの式に冒頭の Substitute がないと思う
ダウンロードファイルの Substituteを削除すると
きちんと計算するこれもわたしのも間違い?勘違い?
投稿記事には 冒頭のSubstituteってないんですよね?
Substituteは、書式を合わせたほうが分かりやすいかと、こちらで追加しました。
Let関数の外部に入れたので、Letの結果に対して1回しか処理しないですよね?
なんでこの部分が原因とは考えなかったのですが・・・
念のために冒頭のSubstitute削除しても同様でした。
やはり原因はLet内部、初期化部分の抜け見たいです
Offline
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 555.28 KiB (Peak: 583.24 KiB) ]