- ベストアンサー
エクセル/マクロについて
例えば、 A1のセルに株価をリアルタイムで表示させています。(楽天証券リアルタイム・スプレッドシート利用) B1のセルに売買の目安として"1,501"(円)と入力しておきます。 A1の値は相場時間中つねに変動するのですが、一度でもB1の値である"1,501"をつけた場合に、C1のセルに"Y"と表示するようなマクロはどう組めば良いのでしょうか? あるいは、マクロを使う以外の方法があるのなら教えてください。 よろしくお願いします!
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>領域(あるいは列全体)にするにはどうしたら良いのでしょうか? 生憎、ご相談の証券スプレッドシートやスピードマーケット等を使ってる状況では、そういう便利な使い方はできません 生真面目に一つずつ書き並べていくのは、一つの解決策です。 private sub Worksheet_Calculate() if range("A1").value >= range("B1").value then range("C1") = "Y" if range("A2").value >= range("B2").value then range("C2") = "Y" if range("A3").value >= range("B3").value then range("C3") = "Y" end sub 全く別のアプローチとして、次のような方法も可能です ・先のマクロは消去する ・ご利用のエクセルのバージョンも不明のご相談なので、具体的にどこを選んで何をクリックと手順をご説明するのは割愛します ・エクセルのオプションの数式(計算方法)で反復計算のチェックを入れる ・C1に例えば =IF(SUM(A1)=0,"",IF(A1>=B1,"Y",C1&"")) と記入、以下コピーしておく。 #あなたのホントのエクセルの状況(具体的なセル番地、各セルの具体的な今現在の様子や内容)が示されていませんので、この通りこのままでは上手くいかないかもしれません。適切に応用してください。 >質問が増えてしまって申し訳ないのですが、ご教示ください。 回答者には、後出しの追加ご質問にお付き合いする義理は無い事に留意してください。 こうやってダラダラ続けるうちに、最初の解決したご質問がすっかり無かった事になってしまうのもよくある(不快な)事ですし。 新しい状況で新しいご質問を思いついたときは、新たな状況を詳しく書き添えて、新しいご相談としてまた投稿してください。
その他の回答 (2)
- Nouble
- ベストアンサー率18% (330/1783)
なかなかな内容ですね 関数での解が 解らない方か 大多数だ と、思います でも、エジソンの玉子 見てしまえば 簡単です セルC1に 以下のように 書き 反復計算を許します ついでに 値yからの 復帰機能も 付けておきます =IF(D1="",IF(A1<=B1,"y",C1),"") または、 =IF(D1=D1,IF(A1<=B1,"y",C1),"") D1に 何か書き込まれれば C1が リセットされます ので フォームコントロール等を用い ボタン式とかで リセットできる ようにする と、 スマート で、しょうね 要は フリップフロップ や、 CMOSメモリー等 の、 動作原理と同じ事 自己参照 ただ其だけの事 ですね こうすれば セーブ、クローズ、再オープン、 等、した と、しても 其でも 値は保存 されます 余談ですが 以前は 私自身も 絶対不可能 と、していた の、です が、 此方で お示し頂き 目から鱗が 落ちました 以来 かなり活用させて 頂いています 日付自動入力等 応用範囲は 様々で 知っていると 重宝する テクニック ですね
- keithin
- ベストアンサー率66% (5278/7941)
シート名タブを右クリック、コードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub Worksheet_Calculate() if range("A1").value >= range("B1").value then range("C1") = "Y" end sub
お礼
有難うございます。 すごいです!("Y"がでたときは感動しました) A1, B1, C1を単一セルではなく、領域(あるいは列全体)にするにはどうしたら良いのでしょうか? 質問が増えてしまって申し訳ないのですが、ご教示ください。
お礼
新しい質問にもご回答頂き、本当に有難うございました。助かりました。 回答側にもまわれるように、精進して行きたいと思います。