[[20090716125246]] 『一定の条件になったら "☆" 印を "★" に変更』(jojo) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『一定の条件になったら "☆" 印を "★" に変更』(jojo)

 この場所へは三度目の質問になりますが、宜しくお願い致します。

 [P4:P99] 列の中の数箇所に "☆" 印が書き込まれています。(無い場合も有りますが)

 マクロを使い、一定の条件の下で、この箇所にある複数の "☆" 印を "★" に変更したいのです。

 一定の条件とは、C4セル(絶対参照)の値よりも、"☆" 印の付いた箇所より4つ右隣の数値(T4:T99 の何処か)が大きかった場合です。

 なお、このマクロはループ処理の中で使いたいので、可能な限り短いマクロにしたいと思っています。

 excel2003 vista


 どのようなループかわかりませんが、これではどうでしょう?
 必ず、バックアップをしてから実行してください。

 [P4:P99] = [if(p4:p99<>"",if(p4:p99="☆",if(t4:t99>c4,"★","☆"),p4:p99),"")]

 (seiya)

 いつもお世話になっています。また、早々の回答、有難う御座います。

 上の式ですが、これを

    If ・・・・・ Then
 	Application.Run "★"  ,必要があれば使っても可
    End If

 などに組み込むにはどのように書き直せばいいのでしょうか?


    If ・・・・・ Then
       [P4:P99] = [if(p4:p99<>"",if(p4:p99="☆",if(t4:t99>c4,"★","☆"),p4:p99),"")]
    End If
 とか?
 でも、ActiveSheetにしか適用できませんけど。
 (seiya)

 この式は、このまま貼り付ければ問題無く動くのですね。

 式に、始めて見る[ ]が入っていたので、そのままではマクロに組み込めないのでは?と思い、
 私の勘違いで難しくやろうとしてしまいました。(;_;)

 お蔭様でシミュレーションが簡単にできる様になりました。有難う御座いました。
 (jojo)


 参考に、以下の3つの書き方はすべて同じ動作をします。

  Range("A1").Select
  Application.Evaluate("A1").Select
  [A1].Select

 Evaluateメソッドのヘルプに[]で代用できる事が書かれています。
 コードの動作の簡略化にはなりませんが、記述を短くする事は出来ます。

 慣れてくると逆に見にくくなってくる場合もあるかもしれませんが
 (グレイ)

 私は通常、オブジェクトには用いませんが、
 > 可能な限り短いマクロにしたいと思っています。
 というとでしたので、あえて Evaluate method の Short cut notation である かぎ括弧([])を使用しました。

 Evaluate method は
 1) 文字列を数式として計算する 
 2) 2次元配列を受け付ける
 という特性を持っていますので、
 上記のコードは 左辺の範囲に 右辺で計算した結果の配列を各セルに同時に出力しています。

 この方法だと、ループをしなくて済みますが、セルに数式がある場合は値に変換してしまいます。

 ちなみに他のオブジェクトも[]であらわせます。
 [四角1].Select

 今回の使用方法には、いろいろな制限があり、全てに適応させることはできません。
 例えば
 数式に Looup/Count/And/Or等を使用すると、正確な値を求めることができませんので
 注意が必要です。
[[20070212134849]] 
 (seiya)


 seiyaさん、グレイさん、説明有難う御座いました。

 今、
 > [P4:P99] = [if(p4:p99<>"",if(p4:p99="☆",if(t4:t99>c4,"★","☆"),p4:p99),"")]
 を、
 [P4:P99] = [if(p4:p99<>"",if(p4:p99="☆",if(t4:t99*$Q$1<$C$4-1,A4,"☆"),p4:p99),"")]
 と、手直しして使っています。

 if(t4:t99*$Q$1<$C$4-1,A4 の意味は、
 $Q$1 には%が登録されています。
 $C$4-1 は、C4の値(高値)より1を引いてあります。
 A4 には、最新の月日が入っています。

 これは株価の時系列データを使ったシミュレーションで、始値で買ったと想定した株価 から?%上がればという事で、
 本来は書式設定での色サインが表示されるのですが、売り判断の方はマクロが作れず手動で行っていました。

 これを今回教わった方法で、「買値*%<今日の高値」の時に、☆印を消し、
 今日の日付を登録させる事が出来た次第です。
 こんな方法で、色々な銘柄の過去数百日の売買を趣味レーションしています。
 (自己紹介モードのjojo)


 いろいろ試してください。
 ただ、Undoはできませんのであくまでもバックアップして試されることを
 お勧めします。
 (seiya)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.