こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

ExcelのVBA初心者です。どなたか教えてください。
自作の関数を作りたいのですが、excelで、「この場所のセルのひとつ左のセルを選択」して、ある処理をするにはどのようにしたらいいのでしょうか?

たとえば、A1に何かデータがあるとき、B1に自作関数を打ち込むとA1の値を使って何らかの処理をして、その値をB1に返す、ということがしたいのです。また、例えばデータがB8にあるときは、C8に関数を入れるとB8のデータが処理されてC8に返ってくるようにしたいです。

最初、ActiveCell.Offset(0,-1) でうまくいくと思っていましたが、実際やってみるとどうもうまくいきませんでした。
どなたかわかる方、よろしくお願いします。

投稿日時 - 2006-02-23 19:38:00

QNo.1986807

すぐに回答ほしいです

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

こんばんは。#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

投稿日時 - 2006-02-23 21:08:20

お礼

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

投稿日時 - 2006-02-28 22:58:56

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

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

投稿日時 - 2006-02-24 00:04:11

ANo.4

質問の内容が理解できていないかもしれません。
もしそうだったらごめんなさい。

B1には関数式を入力するのか、VBAで計算させた
結果を表示させるのかが分かりませんでした。

もしB1セルに関数式を入れるのであれば
OFFSET(B1,0,-1)を式の中に入れたらA1の値を
使って計算してくれると思います。
この場合、VBAを使う必要はありませんし
相対参照の式ですので、どこに数式をコピー
しても左隣りのセルを参照してくれます。

どうしてもVBAでしたいのであれば
変数を使ったらどうですか?

atai = ActiveCell.Offset(0, -1).Value

というように左隣りの値をataiに代入しておいて
それを計算式で使うのです。
簡単すぎる式ですが(恥ずかしい・・・)

ActiveCell.Value = atai * 2 / 3


頑張ってくださいね。

投稿日時 - 2006-02-23 23:08:02

お礼

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

投稿日時 - 2006-02-28 22:59:35

ANo.2

こんばんは。

できたら、もう少し具体的に説明してください。

>B1に自作関数を打ち込むとA1の値を使って何らかの処理をして、

どうしたら良いのでしょうか?

例えば、ワークシートのセルに、

= MyFunction()

と入れて、左隣のセルの値を処理して結果を出そうとしているのですか?

もし、そうだとしたら、初心者の方が、お使いになるテクニックではないのですが。

投稿日時 - 2006-02-23 20:06:42

補足

実は、統計で使う「スピアマンの順位相関係数」というものを求めたいのです。。。以下、具体的に説明します。

いま、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をもとにすぐに計算できます)

このやり方を知りたいのですが・・・・。
長ったらしくてすみません。。
よろしくお願いいたします。

投稿日時 - 2006-02-23 20:15:06

ANo.1

ActiveCell.Offset(0,-1).select

じゃないの?

投稿日時 - 2006-02-23 19:54:36

あなたにオススメの質問