○第163回目 QXマクロ、文章中の数値の取得
QXエディタでは、計算式を記述してその計算ができます。計算そのものはマクロと言うことになりますが、すでにどなたかが開発済みのものです。
【参照先】
http://www.vector.co.jp/vpack/filearea/win/writing/edit/qx/index_002.html
QX>この行を計算 0.62
カーソル行を計算式とみなして計算を行うマクロ (99.06.25公開 30K)
36*12345679
ここで『この行を計算マクロ』を動かすと
36*12345679=444444444
となります。
次にこの結果をもとに計算させます。
36*12345679=444444444/4
とすると次の二行のようになります。
36*12345679=444444444
44444444/4=11111111
今の計算例は余興ですが、こんな機能のマクロがあるのです。ぜひ利用してください。
今回のテーマは、このようにいろいろと計算を重ねていった後に、これまで出てきた数値を使ったもので計算したいというニーズに対応するものです。
計算式としてはめちゃくちゃですが、これまで出てきたもの使って、
12345679*4/36+444444444-11111111 という計算をしたいと思ったときに使えるマクロです。
第160回目 QXマクロ、30行上下の漢字またはカタカナ文字列を抽出
を参考にするといいですね。やってみたら簡単にできてしまいました。
非数字から数字になった。これで先頭がわかる。
数字から非数字になった。これで最後がわかる。
この数字の定義の中には、"."(ピリオド)と","(カンマ)を入れておきます。小数とカンマ入りの数字に対応するためです。
注意すべき点は、2点です。
1.カーソルのある場所に数字を挿入しましが、そこ際にはカーソルのある文字は削除しないこと。
2.四則演算子及びカッコをこのマクロの中で入力できること
こんなところでしょうか。
取得した数値にソートをかけて、並べなおしたものを表示するという機能もいいでしょうね。
2011年7月24日日曜日
2011年7月15日金曜日
○第162回目 計算式のコピー。偏差を与える方式
○第162回目 計算式のコピー。偏差を与える方式
計算式の複雑なコピー。複雑系計算式の作成をもっと簡単にしたものです。
計算式の中の座標の一つずつに対して、列の偏差及び行の偏差を与えて計算式をコピーするという方式です。これにより、かなり複雑な計算式コピーができます。
例えば、総和をとる行が一つずつ少なくなっていくSUM関数。
範囲の最初の座標に対して、行番号を+1とし、他の座標に対しては、そのままとするように指示をするとできます。
=sum(b5:b30) b5の行番号のみを+1し、他は±0とする指示を与える。
縦方向にコピーすると次の計算式がコピーされる。
=sum(b6:b30)
=sum(b7:b30)
=sum(b8:b30)
:
:
このマクロはかなり便利です。これまでの複雑系の計算式のコピー機能をかなりの質で凌駕しています。
今までのものは一体なんだったのでしょうか?
縦のものを横に展開する。こんなのは簡単です。
=b5 をもとに行番号のみを+1する。
そして、横方向にコピーする。
すると、
=b5 =b6 =b7 =b8 …… となります。
ここでの眼目は、計算式内の座標を正確に取得することです。
これさえクリアできればほぼ完成です。この機能はすでに計算式の中の座標に飛ぶというマクロでカバーされています。
計算式中の一つの座標がわかったとなりますと、次にそれを列記号と行番号にわけ、列記号を列番号に変換します。
このひとつの座標ごとに縦偏差と横偏差を与えることになるので、列番号と行番号に加算し、列番号を列記号に変換すれば、新しい座標ができます。これを旧の座標に置き換えてやればいいことになります(置換え処理を使います)。
これを座標の数だけ繰り返していけばいいことになります。計算式のコピーは複数個となりますので、偏差をその分だけ変化させていけばいいでしょう。
問題が一つあります。それは旧の計算式の中を旧の座標を新の座標で置き換えていくわけですが、場合によっては、ある置換元の座標が、すでに置換わった新の座標に反応してしまうということです。これを避ける方法は難しいので、計算式を作ったと変な数値が出てきますので、それでチェックしてください。また、計算式のチェックで前後と違うということで見つけてください。
例 すでにAH16と置換わっているものに対して、H16をI16に置き換えろということになると、AH16が反応してしまい、AI16に変わってしまいます。
また、新の座標が、別の旧の座標と同じになってしまう場合は、さらに違う座標に置換わってしまいます。
この調整は手作業となってしまうという問題点はあるのですが、この機能はかなり便利なものですからチャレンジして見てください。
『第107回目 計算式で参照されている場所に飛ばすことができないか(その1)』あたりを参照してください。
計算式の複雑なコピー。複雑系計算式の作成をもっと簡単にしたものです。
計算式の中の座標の一つずつに対して、列の偏差及び行の偏差を与えて計算式をコピーするという方式です。これにより、かなり複雑な計算式コピーができます。
例えば、総和をとる行が一つずつ少なくなっていくSUM関数。
範囲の最初の座標に対して、行番号を+1とし、他の座標に対しては、そのままとするように指示をするとできます。
=sum(b5:b30) b5の行番号のみを+1し、他は±0とする指示を与える。
縦方向にコピーすると次の計算式がコピーされる。
=sum(b6:b30)
=sum(b7:b30)
=sum(b8:b30)
:
:
このマクロはかなり便利です。これまでの複雑系の計算式のコピー機能をかなりの質で凌駕しています。
今までのものは一体なんだったのでしょうか?
縦のものを横に展開する。こんなのは簡単です。
=b5 をもとに行番号のみを+1する。
そして、横方向にコピーする。
すると、
=b5 =b6 =b7 =b8 …… となります。
ここでの眼目は、計算式内の座標を正確に取得することです。
これさえクリアできればほぼ完成です。この機能はすでに計算式の中の座標に飛ぶというマクロでカバーされています。
計算式中の一つの座標がわかったとなりますと、次にそれを列記号と行番号にわけ、列記号を列番号に変換します。
このひとつの座標ごとに縦偏差と横偏差を与えることになるので、列番号と行番号に加算し、列番号を列記号に変換すれば、新しい座標ができます。これを旧の座標に置き換えてやればいいことになります(置換え処理を使います)。
これを座標の数だけ繰り返していけばいいことになります。計算式のコピーは複数個となりますので、偏差をその分だけ変化させていけばいいでしょう。
問題が一つあります。それは旧の計算式の中を旧の座標を新の座標で置き換えていくわけですが、場合によっては、ある置換元の座標が、すでに置換わった新の座標に反応してしまうということです。これを避ける方法は難しいので、計算式を作ったと変な数値が出てきますので、それでチェックしてください。また、計算式のチェックで前後と違うということで見つけてください。
例 すでにAH16と置換わっているものに対して、H16をI16に置き換えろということになると、AH16が反応してしまい、AI16に変わってしまいます。
また、新の座標が、別の旧の座標と同じになってしまう場合は、さらに違う座標に置換わってしまいます。
この調整は手作業となってしまうという問題点はあるのですが、この機能はかなり便利なものですからチャレンジして見てください。
『第107回目 計算式で参照されている場所に飛ばすことができないか(その1)』あたりを参照してください。
登録:
コメント (Atom)
