エクセル、マクロ、VBA」カテゴリーアーカイブ

excel マクロ メモ IFS 、IFの複数判定

セルに複数のIF条件文を入れたい時がある。入れ子にできるが非常に見づらくなる。そこで「IFS」がある


=IFS(E7>=B7,”Down”,F7<=B7,”UP”,TRUE,”–“)
「条件E7>=B7、処理”Down”」で対になる。左から優先判定されて条件が真ならそこで判定は終わる。
後ろの「TRUE,”–“」は、範囲外の判定のために使用
前2つのIF判定に該当しないときは、ハイフン2つを表示するという意味
なお約200以上の条件を追加できる(細かい数字は覚えていない)

=IFS(E7>=B7,soundAlert(1),F7<=B7,soundAlert(2),TRUE,”–“)
関数も利用できる。注意:ただし、更新できるセルは、当該マクロが設定されたセルに限られるかもしれない。つまり「他のセル」の値を変更とかできないかもしれない。

補足
=AND(IF,IF)
=OR(IF,IF)
みたいな記載条件もある。つまり演算子判定(IF AND IFみたいな)記載ではなく、カッコ内にAND,OR演算子が存在するみたいな条件文

エクセルVBA、楽天証券マーケットスピードのRSSを使用して株価情報取得

マーケットスピードの株価チャートを見ていて、株価や板をずっと見ていると目が疲れてくる。
株価の変動が大きいときは我慢できるが、商いが薄いときは株価が動かず眠くなる。
そこで、楽天証券マーケットスピードのRSSを使用して株価情報を取得して必要な値になったら色の変化で表示させたら便利かもと思った。
このRSSを使用して株価情報をエクセルのシードに表示させるとどうなるか試してみた。
なお、エクセルを使用するために、毎月約1300円くらい支払う。年払いのほうが安いが毎回数ヶ月くらいしかエクセルを使わないので今回も月極にした。

マーケットスピード2のRSSのマクロはこちら

姉妹ブログはこちらエクエルを使用してマーケットスピード2とRSSを利用して株価をチェックするメモ

・RSS(リアルタイムスプレッドシート)
「RSSとは、マーケットスピード投資情報ページ「市況情報(先物OP市況情報)」に表示される値(注)を特殊な関数(RSS関数)を用いて市販表計算ソフト『Microsoft Excel』に取り込み、セル上に表示させるツールです。」
https://www.rakuten-sec.co.jp/MarketSpeed/onLineHelp/msman1_11_1.html

マーケットスピードの機能でも株価情報を表示させることは可能だが、RSSとエクセルを使用することにヨテ自分だけの必要な情報のみを表示させるシートを作成することができる。

・VBAの注意点
IF文のelse if は[elseif](他の言語は、大抵[else if]のようにスペースを入れる)
等価はイコール1つ(他の言語は大抵イコールが2つ必要)
ちなみにVBAとマクロは厳密に仕様が異なることがあるので確認するとよい

・使用環境:Windows10、エクセル Office365 マーケットスピード、RSS.exe
なお、RSSを登録するにはエクセルのマクロを有効にするなど、いくつか設定が必要である。
またRSSが実行できるようにセキュリティソフトの設定も必要。
これらの設定は楽天証券のホームページとグーグル先生が教えてくれる。
(数年経過すると、サイトが閉鎖されているのでネットの情報も永遠ではない)

・エクエルシート構成、マクロ仕様

‘VBAはシングルクォーテーションがコメントになる
‘Ctr+spaceで入力途中でコマンドの候補が表示される。簡易的な入力支援みたい

・動作環境:Windows,マーケットスピード、RSSを起動しマーケットスピードにログインしておく
‘Windowsのみ、RSSが対応しているのはWindowsのみでMacは動作しない
・目的
‘RSSで取得した情報を一定時間間隔で別セルにコピーする、時刻、比率等を記載
‘株価の動きを予測する資料とする
・動作手順
‘マーケットスピードにログインして、RSSを起動する「接続中」となる。「接続処理中」は接続できていないので接続中になるように調整すること
‘エクセルを起動して該当のファイルを開く
‘取得したい銘柄コードを入力する。この作業は手作業
‘マクロを実行させる。その後は、自動でセルのコピーが始まる
‘市場が開いていない時間帯はコピー処理は行わない。
‘2021・04・26

 

楽天証券のマーケットスピード2、エクセル、別のブックのセルからコピーする案

作業はこれからで、アイデアだけをまとめておく

楽天証券の「マーケットスピード2」(2)のRSSと「マーケットスピード」(1)のRSSは構成が異なる。
「マーケットスピード」(1)(以下(1)とする)のRSSは実行形式であり、(1)を起動してRSS.exeを起動する必要があった。
一方「マーケットスピード2」(以下(2)とする)のRSSは、(2)を起動すれば使用できる。(2)用のRSS.exeは存在しない。
なお、エクセルのアドイン登録がどちらの場合も済んでいるものとする。
(1),(2)は同時に実行が可能である。

姉妹ブログはこちら

エクエルを使用してマーケットスピード2とRSSを利用して株価をチェックするメモ

やってみたこと

(1)の場合VBAでループ処理により、株価の取得からいくつかの処理を行っていた。
(2)で(1)の同様な機能を実行しようとしても、動作しなかった。
具体的には(1)を別名保存して、(2)用の関数名に置換した。大まかに置換することで実行可能。
必要な関数の変更を行ったが、(2)では実行できなかった。エラー等の発生はないが、マクロとVBAの組み合わせの相性が悪いようだった。

改良

よって、
(2)で(1)と同様な機能を実行する場合、(2)で取得したデータをブックのシートのセルに貼り付け、その貼り付けたデータを別のブック(VBAコードあり)へコピーすることにした。
つまり、(2)のブックで株価等のデータを集め、別の処理をするブック(B)を作成し、ブック(B)にループ処理を行うVBAコードを記述することにした。

ブックA(マーケットスピード2のRSS):株価等の情報をセルに確保

ブックB(VBAコード):株価等の情報をもとに適宜必要な処理を行う。

VBA,マクロ

ブックAのマクロ
(これから)

ブックBのVBAコード
(これから)

以前のRSSを利用したマクロ

MarketSpeed2RSSのローソク足のデータ取得例

楽天証券、マーケットスピード2のRSSの関数、ローソク足RSS2の機能 @RSSChart()
9201コードのローソク足を取得例
2分足2M、2本取得(もっと多くのローソク足データを取得できる)

A2セルにマクロを記入すると、A3以降に出力結果が表示される。ローソク足データを取得することによりリバウンド時の状態を検知できる。また出来高の増減を把握できる

注意点

「マーケットスピード2」RSSのVBAと「マーケットスピード(1)」RSSのVBAは違うようだ。1で動いたエクセルVBAが、2では動かないところがあった。(1)でループ処理してたところが(2)では動かない。なので、(1)と(2)は別々の動作と考える必要があり、しばらくは(1)と併用するほうが良さそう。2021/08/27

環境

Windows10、エクセル、MarketSpeed2(RSSはMarketSpeed2を起動するだけでよい)

株価チェックEXCELマクロ、安値高値

株価をチェックして、安値高値でサウンドを再生

ちなみにヤフーファイナンスでも安値、高値に達したらメールで知らせてくれるサービスは存在するが、メールを見ないといけないし、複数の銘柄をチェックする場合は面倒になってくる。エクセルシートを見ながら、再生音で安値、高値をチェックできたら便利と思った。

エクセルを複数起動したい場合は、Windowキー+Rファイルを指定して起動で[excel /x]と入力して起動させて、エクセルブックを開けばよい。

仕様
楽天証券、マーケットスピード、RSS.exeが必要。Windowsのみ。
VBAによるループ処理で、現在値と安値、高値を比較します。
DoEvntsでイベントを受け付けます。
安値、高値になるとサウンドが1回再生されます。達成チェック列(H2以降)の文字を消すと再度再生します。サウンドファイルは個別に用意をする必要があります。
コードを入力後は銘柄ボタンをクリックしないと株価を取得しません。

参考にしたサイト

https://dp-invest.hateblo.jp/entry/2020/11/09/192427

使い方

(1)コードを入力して銘柄ボタンをクリックすると銘柄名と株価を取得します。
(2)安値と高値を入力します。省略可能。
(3)チェック開始ボタンで比較実行
(4)終了ボタンで処理を停止