• ベストアンサー

エクセルVBA 「このセルを選択する」方法は? (超初心者です)

ExcelのVBA初心者です。どなたか教えてください。 自作の関数を作りたいのですが、excelで、「この場所のセルのひとつ左のセルを選択」して、ある処理をするにはどのようにしたらいいのでしょうか? たとえば、A1に何かデータがあるとき、B1に自作関数を打ち込むとA1の値を使って何らかの処理をして、その値をB1に返す、ということがしたいのです。また、例えばデータがB8にあるときは、C8に関数を入れるとB8のデータが処理されてC8に返ってくるようにしたいです。 最初、ActiveCell.Offset(0,-1) でうまくいくと思っていましたが、実際やってみるとどうもうまくいきませんでした。 どなたかわかる方、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。#2 のWendy02です。 「スピアマンの順位相関係数」 の、VBAのユーザー定義関数は、以下のWebサイトの一番下にあります。 http://aoki2.si.gunma-u.ac.jp/lecture/Soukan/spearman.html

参考URL:
http://aoki2.si.gunma-u.ac.jp/lecture/stats-by-excel/vba/html/spearman.html
yonchi
質問者

お礼

この関数を使って、FX(為替証拠金取引)のシミュレーションソフトを作成しました。無事完成し、問題なく動くものができあがりました。 (^^) ありがとうございました。

その他の回答 (4)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

B1 =myFunc(A1) というように、必要な値や範囲を引数にしてやればいいだけのように思いますが・・

  • terakura
  • ベストアンサー率20% (4/20)
回答No.4

質問の内容が理解できていないかもしれません。 もしそうだったらごめんなさい。 B1には関数式を入力するのか、VBAで計算させた 結果を表示させるのかが分かりませんでした。 もしB1セルに関数式を入れるのであれば OFFSET(B1,0,-1)を式の中に入れたらA1の値を 使って計算してくれると思います。 この場合、VBAを使う必要はありませんし 相対参照の式ですので、どこに数式をコピー しても左隣りのセルを参照してくれます。 どうしてもVBAでしたいのであれば 変数を使ったらどうですか? atai = ActiveCell.Offset(0, -1).Value というように左隣りの値をataiに代入しておいて それを計算式で使うのです。 簡単すぎる式ですが(恥ずかしい・・・) ActiveCell.Value = atai * 2 / 3 頑張ってくださいね。

yonchi
質問者

お礼

親切に教えていただきありがとうございました!

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 できたら、もう少し具体的に説明してください。 >B1に自作関数を打ち込むとA1の値を使って何らかの処理をして、 どうしたら良いのでしょうか? 例えば、ワークシートのセルに、 = MyFunction() と入れて、左隣のセルの値を処理して結果を出そうとしているのですか? もし、そうだとしたら、初心者の方が、お使いになるテクニックではないのですが。

yonchi
質問者

補足

実は、統計で使う「スピアマンの順位相関係数」というものを求めたいのです。。。以下、具体的に説明します。 いま、A列には日付が昇順に入っています。 A1: 1 A2: 2 A3: 3 A4: 4 A5: 5 以下同様 B列には、価格が入っています。 B1: 14 B2: 18 B3: 17 B4: 13 B5: 15 以下続く このとき、計算期間をn(整数)として、それぞれの時間における価格と日付の順位を求めます。 計算を単純化するために、ここではn=3とします。 まず、1日における価格B1の順位(B1~B3の中での順位)は、もっとも低いので3です。 日付は直近の日付から順位をつけるので、A1~A3の中で比較すると、3となります。 次に、価格B2の順位はB1~B3の中でもっとも高く、1です。日付A2の順位は2です。 同様に価格B3の順位は2、日付A3の順位は1です。 ここで、C1セルに先ほどの数値を用いて C1 = (1日の日付順位-価格順位)^2 + (2日の日付順位-価格順位)^2 + (3日の日付順位-価格順位)^2 = (3-3)^2 + (2-1)^2 + (1-2)^2 = 2 が入るようにしたいです。(順位相関係数は、求まった2をもとにすぐに計算できます) このやり方を知りたいのですが・・・・。 長ったらしくてすみません。。 よろしくお願いいたします。

  • driverII
  • ベストアンサー率27% (248/913)
回答No.1

ActiveCell.Offset(0,-1).select じゃないの?