みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になります。
例えば以下の文章がテキストフィールドにあります。
おはようございます。(改行)
今日も1日がんばりましょう。(改行)
---以上---
改行から改行までの文字数を数えることはできないでしょうか?
1行あたりの文字数を制限したいです。
例えば11文字以上になったら、別の計算フィールドに「文字数オーバー」などと表示できるようにしたいです。
上記の場合でしたら、
1行目10文字
2行目14文字
11文字を超えている行があるので「文字数オーバー」と別フィールドに表示。
このようなイメージです。
よろしくお願いします。
Case ( Evaluate("Max(Length(" & Substitute ( Quote ( テキスト ) ; ¶ ; "\");Length(\"" ) & "))" ) > 10 ; "文字数オーバー" )
計算式繰り返しフィールドを用意して、
Let (
t = GetValue ( Text[1] ; Get ( 計算式繰り返し位置番号 ) ) ;
Length ( t )
)
という式を設定しておきます。
更に、その Max() を取れば最大の文字数がカウントできます。
1フィールドですませるには、再帰式で同様のことをすればいいでしょう。
Offline
迅速な回答ありがとうございます。
教えていただいたものでできました。
過去ログも調べて以下でも1行あたりの最大文字数を取得することができました。
Let([
$リスト=テキスト;
$行数=ValueCount($リスト);
$答=0;
$関数="Case(
$行数=0; $答;
Let([
$答=Max(Length(GetValue($リスト;$行数));$答);
$行数=$行数-1
];
Evaluate($関数))
)"
];
Evaluate($関数))
ちなみに1行あたりの最小文字数を調べたいときはどうしたらよいのでしょうか?
よろしくお願いします。
MaxをMinにします。
「過去ログ」のでは最初の$答え=0も999999とか適当に大きい数にしておく
ありがとうございます。
最小も取得できました!
ただ文末に改行がある場合、例えば
こんにちは(改行)
(改行)
の場合「0」と取得したいのですが
「5」となってしまいます。
改善策はないでしょうか?
文末でも途中でも、改行が2個続いてたらそこには長さ0の文字列があることになるので、0で正しいと思いますけど
私の式で改行をエスケープし忘れてた。
長さ0の行は無視する最小の計算。
Evaluate(
"Min(Let(L=Length(" & Substitute ( Quote ( テキスト ) ; "\¶" ; "\");Case(L;L));Let(L=Length(\"" ) & ");Case(L;L)))"
)
はじめまして 宜しくお願いします。
テキストフィールドに入力した文字を、計算フィールドに反映させ、一行が72バイトになるように自動的に改行させる計算式はありますでしょうか?
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 513.71 KiB (Peak: 518.25 KiB) ]