マクロによる最大値・最小値の求め方

このQ&Aのポイント
  • マクロ初心者でも分かる、ファナックのロボドリルでの機内計測方法について解説します。
  • 任意のZ平面3点を測定し、測定結果から最大値と最小値を求める方法をマクロで実装することができます。
  • 最大値・最小値の判断は単なる算数だけでなく、マクロを使用することも可能です。参考式もご紹介します。
回答を見る
  • 締切済み

マクロによる最大値・最小値の求め方

ファナックのロボドリルで機内計測を検討しています。 マクロ初心者で分からないのですが、任意のZ平面3点を測りたいと考えています。 測定結果が仮に50.002mm・50.030mm・50.040mmと出た 場合、この中の最大値と最小値を求めたいと思います。 プログラムの中で判断させて最大値・最小値を任意のマクロ変数に入れておきたいのですが 最大値・最小値の判断はマクロで可能でしょうか? 単なる算数の問題でしょうか? できましたら、参考式なども教えて頂けたら幸いです。 以上よろしくお願い致します。

noname#230358
noname#230358

みんなの回答

noname#230359
noname#230359
回答No.1

◆3個程度なら力技で 例えば#1~#3に測定値が入っているとします。 #31に最小値 #32に最大値が入ります ------------------------------ #31=#1(MIN) #32=#1(MAX) IF[#2LT#31]THEN#31=#2 IF[#2GT#32]THEN#32=#2 IF[#3LT#31]THEN#31=#3 IF[#3GT#32]THEN#32=#3 ------------------------------ ◆変数が連続してて、かつ数が多い時はDO~WHILEを使うとスッキリします。 例えば測定値が #101~#110に入ってるとします。 ------------------------------ #1=101.(START) #2=110.(END) #31=#[#1] #32=#[#1] WHILE[#1LE#2]DO1 IF[#[#1]LT#31]THEN#31=#[#1] IF[#[#1]GT#32]THEN#32=#[#1] #1=#1+1. END1 ------------------------------

noname#230358
質問者

お礼

ご回答ありがとうございました。 お陰さまで解決できました! また、大変勉強になりました。 今後ともよろしくお願い致します。

関連するQ&A

  • Excel2003 VBA 最大値と最小値の求め方

    自分でいろいろ調べてみたのですが、ちょっとわからなくて質問させて頂きます。 VBAのコードにMINとMAX関数を入れて日付の最大値と最小値を求めたいのですがうまくいきません。 処理の初めに、対象の列には書式をYYYY/MM/DDの書式にし、そのあと最大値と最小値を変数に入れて求めています。 値を入れる変数はデータ型にしています。 表には2008/3/12など表示されているのに、MAX,MINともに変数の値は0でした。 どうしてこうなるのか見当もつきません。 よろしければ、返答お願いします。

  • 3変数関数の最大最小

    x,y,zが原点中心半径1の球上をうごくときのx+2y+3zの最大最小ってどうやって求めますか? =kとおいて球と平面が接するときで良さそうな気もしますが、平面と違ってイメージしづらく、あってる確信がありません。 出来るだけたくさんの解法を知りたいので三角関数や純粋に3変数関数としての処理の仕方があったら是非教えてください。よろしくお願いします。

  • (EXCEL)最大値、最小値を除いた平均

    たとえばA1、A2・・A4、A5にある測定値が入っています。 この中で最大値と最小値を除いた平均値をA6に入れたいのですが、どのような式を入れたらよろしいでしょうか? よろしくお願い致します。

  • エクセルの任意範囲の最大値最小値の取得について

    エクセルデーター任意範囲の最大値と最小値の取得方法について教えて下さい。 例は以下の形式です。 //////////////////////////////////////////////////////////////// A B C D E G H I O 1 0.51 1.32 0.32 0.34 2 0.59 1.43 0.33 0.35 3 0.62 1.59 0.30 0.36 4 0.60 1.57 0.31 0.30 5 0.59 1.62 0.34 0.39 ←"+1"          6 0.68 1.64 0.34 0.34 7 0.68 1.60 0.33 0.33 8 0.59 1.58 0.31 0.30 9 0.49 1.40 0.33 0.29 10 0.38 1.20 0.29 0.29 . . . . . 11 -1.2 -2.3 -1.3 -1.4 . . . . . E列:昇順に1からの値 G列,H列,I列,O列:完全な規則性はない正負小数点の値。大きく見ると値は増加や減少ではあるが、1行ずつ見ると常に増加や減少とはなっていない。 最終行も未確定で、10回または、5回の同じ様なデーターの繰り返しで、繰り返し点(最大・最小)の値も決まっていない。 10回または、5回の各繰り返し点(最大・最小)を抽出し、以下の値を追記したい。 I列の最初の最大値の同じ行(B列)に"+1"、最小値の同じ行(B列)に "-1"を追記したい。同様に、"+1"~"+10","-1"~"-10"または、 "+1"~"+5","-1"~"-5"を追記したい。 I列が同じ場合、O列→H列→G列の順に最大値と最小値を判断する。 説明不足であるかもしれませんが、エクセル関数の組み合わせや、マクロ、VBAいかなる方法でもかまわないので、早急に処理できる良い方法はないでしょうか? よろしくお願いします。

  • Accessのマクロで出来ますか?

    Access2002です。 あるフォームの画面にコマンドボタンを取り付けそれをクリックしたとき他のフォームが開くようにマクロを貼り付けてあります。ココまではうまくいっているのですがこの新たに開くホームが最大で開いてしまいます。(元のフォームが最大になっているからでしょうか)訳があってこの新たに開くフォームは最大でなく指定した大きさで開きたいのですがマクロの中の「サイズ変更」を入れてやってみましたがどうもうまく行きません。VBAでなくマクロの中の指令で何とか出来るでしょうか。 叉新しく開いたフォームにもコマンドボタンを貼付けこれをクリックすると最初のフォームに戻るようにしてありますが戻るときは最初のフォームは最大にしたいのです。これもいろいろやってみましたが、新しく開いたフォームが最大なら戻ったフォームも最大になりますが新しく開いたフォームを手動で小さくしていると戻ったフォームも最大になっていません。戻るときのマクロをいじってみましたがうまく行きません。 やりたいこと 最大化しているフォームからマクロで開くフォームは任意の(私の希望した大きさ)大きさで開き戻るときは最初の最大化されたフォームです。 よろしくです。

  • 多変数関数の最大/最小問題の一般的解法

    多変数関数、例えば f(x,y,z) の最大値/最小値を求めるときに ∂f/∂x=0 ∂f/∂y=0 ∂f/∂z=0 の連立方程式を解く方法が、講義ではよくでてきますが 導関数が =0 であっても、極値をとるかどうかはわからないし 極値をとったとしても極大か極小かはわからないと思うのですが… こういう解法がとられる場合には、暗黙の了解として 明らかに極大(極小)となることを前提としているのでしょうか? もしそうなら、それは容易に判断できることなのでしょうか?

  • 薄物円盤の平面度測定

    円盤の平面度測定に腐心しています。 6インチの円盤ですが厚みは0.1mmです。 平行度はマイクロメータなどで厚みを測定し、最大値と最小値で読み取り可能ですが、平面度はそうはいきません。 これまではワークを定盤上に滑らせて、ダイヤルゲージやレーザー変位計で測定しましたが測定毎にバラツキが大きく、殆ど勘で測定値を読みとっている状況です。 レーザー干渉計も検討しましたが、表面が梨地状態なので光が返ってこなく測定できません。 なにか良い測定方法又は測定機などありませんか?

  • Excelマクロで・・・

    任意の変数nを参照し、範囲A1:(A1+n)の最大値を 計算するマクロを作りたいと考えています。 とりあえず Formula="max(Cells(1,1),Cells(1,n))"と書いてみた のですが、(当然なのでしょうが)ダメでした。 良く分からないですがFormulaを使う時はA1とかB15 しか入力出来ないようです。何か良い方法をご存知 でしたらどうかよろしくお願い致します。

  • C言語 最大値と最小値を求めて表示するプログラム

    はじめまして。 C言語を学習中です。 下記の問題演習の解答として記載されているプログラムがどうしても理解できません。 特にプログラムの最後の方のwhile文で最大値と最小値の判定をしているのかと思いますが、どのような計算をして判定しているのでしょうか。 while (array[i] != -1) { if (array[i] > *max) *max = array[i]; if (array[i] < *min) *min = array[i]; i++; 具体的に教えてください。 よろしくお願い致します。 ●問題 0~100の範囲で入力された複数の数値の中から、 最大値と最小値を求めて表示するプログラムを作成せよ。 -1が入力された場合は入力の終わりと判定する。 ただし、最大値と最小値はmain関数以外の一つの関数の中で求める。 また、入力された数値を記憶する配列の要素数は10とし、 それ以上入力された場合はエラーが起きても仕方ないこととする。 ヒント:配列の中に -1 があればデータの終わりだと判断できる。 ヒント:最小値を探すには、最大値を記憶した変数との比較を繰り返せば良い。 ●解答 #include <stdio.h> void maxmin(int array[],int *max,int *min); int main(void) { int i = 0,array[10],max,min; do { printf("%d 番目の数:",i + 1); scanf("%d",&array[i]); i++; } while (array[i - 1] != -1); maxmin(array,&max,&min); printf("最大値 %d : 最小値 %d\n",max,min); return 0; } void maxmin(int array[],int *max,int *min) { int i = 0; *max = 0; *min = 100; while (array[i] != -1) { if (array[i] > *max) *max = array[i]; if (array[i] < *min) *min = array[i]; i++; } }

  • レーザー変位計のガラス越しの計測

     XYテーブルの上に測定物を載せ、動かしながらレーザー変位計で測定物の形状を測定するのですが、測定物を過熱しながら測定するとき、できればふたをして、空気の対流を小さくし、測定物の温度を安定させたいのです。  そこでガラスのふた(培養なんかで使われてるシャーレの様な感じ)などでふたをして、ガラス越しにレーザー変位計で測定したいのですが、ガラスを間に入れることにより屈折、反射により計測が難しいかと思われますが、ガラスの平面度、ガラスとレーザー光との垂直度、ガラスのコーティングにより計測は可能なのでしょうか?  計測物はφ20mmの薄板。ふたの直径120mm、厚さ3~5mm。レーザー変位計の焦点距離30mm。欲しい測定値の精度は1/1000mmです。  何かいい対策等ありましたらよろしくお願いします。