• ベストアンサー

Excel2003VBA offsetの考え方

たとえば、 A1にカーソルがあってActiveCell.Offset(0,1)であればB1を表示することになると思うのですが、なぜ、このオフセットは、先に行で次が列なのでしょうか? たとえば、数学ですとグラフの座標は(x軸,y軸)となっている方がわかりやすいと思うのですが、合理的な考え方があればお教えください。

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

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.1

「たとえば、数学ですと」行列は、行が先で列が後になっているので、わかりやすいと思うのですが、a11,a12,a13のごとくです。配列もこれですし、というより同じものとみる方が正しいか。グラフの座標ではないので、合理的なのではないでしょうか。 Offsetだけではありません。Excelの基本は、R1C1形式というごとくRが先でCが後です。 A1形式は、Lotus123の流れなのではないかと。違っていたらごめんなさい。 Cells(1,2)は、Range("B1")です。

r2san
質問者

お礼

なるほど、大変よくわかりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel2013>VBA>sendkeys動ず

    Excel2013のVBAを使って自動更新をしようと思っています。    A  B   C 1  あ  AA  0 2  い  AB  1 3  う  AC  0 4  え  AA  1 5  お  AA  0 上記のようにシート内にデータはあります。B列「AA」C列の「ゼロ」を更新してC列の値を「1」にしようとしたときに、ピボットテーブルを使ってみようと思いました。 ピボットテーブルにてB列の「AA」、C列の「ゼロ」を抽出表示しました。   A  B  C 1 あ  AA  0 5 お  AA  0 思っていたように1行目と5行目が抽出されました。 後はゼロを別の値(仮に「2」とします)に変更するときに、カーソルの移動がうまくいきませんでした。 Range("C1").End(xlDown).Select Do ActiveCell.Offset(0, 0) = "2" ActiveCell.Offset(-1, 0).Select If Len(ActiveCell.Offset(0, 0)) = 0 Then Exit Do End If Loop しかし、これではカーソルが「C4」に移動してしまいました。 ピボットテーブルでたたんでしまっても、カーソルは見えないセルに移動するようです。 そこで、下記のように変更しました。 Range("C1").End(xlDown).Select Do ActiveCell.Offset(0, 0) = "2" Application.SendKeys "{UP}" If Len(ActiveCell.Offset(0, 0)) = 0 Then Exit Do End If Loop これは、カーソルがまったく動かずに最初の地点にいたままでした。 そこで、次はTABで移動することにしました。 Range("C1").Select Selection.SpecialCells(xlCellTypeVisible).Select Do ActiveCell.Offset(0, 0) = "2" Application.SendKeys "{tab}" If Len(ActiveCell.Offset(0, 0)) = 0 Then Exit Do End If Loop これでもカーソルは動きませんでした。 どうにかしてsendkeysの動かし方、もしくは更新でもっとうまいやり方をご存知の方、是非教えてください。よろしくお願いいたします。

  • Matlab 2行の行列をプロットしたいのですが

    こんにちは、Matlabを使い始めのものです。 二行の行列(2x10とか2x40など)にについて、一行目をx座標、二行目をy座標としてグラフ化したいのですが、うまくいきません。 自動的にx座標は列の番号となり、二つのグラフが現れてしまいます:y座標に一行目、二行目、両方がプロットされてしまいます。どうにか、一行目をx、二行目をy座標としてグラフ化できないでしょうか。おそらく、とても単純なことなのかもしれないのですが、どうしてもわからず、とても歯がゆい思いをしています・・・。どうかご教示ください。 何をしたいかといいますと、音声データをMatlabで取り込んだのですが、振幅データがずらっと並んだ、1x500000とかの行列が得られます。 これを、プロットすると、x軸はサンプル番号が並ぶわけですが、本当はx軸は時間であって欲しいため、音声データの行列にひとつ行を足して、時間軸を作ってあげました。つまり、今手元にあるのは、2x500000の行列で、一行目が時間、二行目が振幅となっています。これをx軸が時間軸、でy軸が振幅となるようにグラフ化してあげたいと考えています。 文章がわかり辛くて申し訳ないのですが、何卒よろしくお願いします。

  • 数学のグラフがわかりません・・・。

    数学のグラフがわかりません・・・。 次の曲線とx軸で囲まれた部分の面積を求めよ。 y=x(x^2-4) という問題なんですがグラフが わかりません。 x座標は-2,0,2の3つだというのは わかったのですがy座標がわからないので グラフが書けません。 誰か教えて下さい!!!

  • Excelについて(グラフ作成)

    Excelでグラフを作成するときに、 例えば、x軸をA列の値、y軸をB列の値にしたいのなら2列を選択して グラフは簡単にできるのですが、それでは x軸をA列の値、y軸はある関数の値(例えばB1に入っているy=2*xのyの値)にしたいときはどうすれば良いのでしょうか? 分りやすくいうと、A列には1行目から 0 、2 、 4 、 6 、 8 、 10 、 12 ・・・・・ B1に、y = 2 * xが入っていてここから x=0 のとき y=0 x=2 のとき y=4 x=4 のとき y=8 x=6 のとき y=12 x=8 のとき y=16 x=10 のとき y=20 よりグラフを作りたいのです。 よろしくお願いします。

  • EXCEL2000 グラフをつくりたい(散布図)

    お世話に(かなり(笑))なっております、aimerです グラフをつくりたいんです。。。(散布図です) グラフの元データは下記のような感じです。 1行目にはタイトルがあります。 2行目から下記のようなデータがあります。 左からA列、B列です。C列にもデータがあります。 つまり、A列が日付、B列が時刻(1分ごと)で、C列に前記に対応したデータなわけです 2002/9/24  0:31:0 2002/9/24  0:32:0 2002/9/24  0:33:0 2002/9/24  0:34:0 2002/9/24  0:35:0 2002/9/24  0:36:0 2002/9/24  0:37:0 これについてグラフがつくりたいわけですが、 B列と、C列についてデータグラフがつくりたいのです。 なので、B列とC列を範囲選択してグラフウィザードでつくりました。 グラフウィザード-2/4-グラフのもとデータというダイヤログボックスの系列タブで、きちんとXの値は=Sheet4!$B$2:$B$541 で。Yの値は=Sheet4!$C$2:$C$541 。。となっているのです。ちゃんと選択されているのに、出てくるグラフは、Y軸は問題ないのですが、x軸にでてこなくてはいけないものは時刻なはずなのに、なぜか普通の数値?がでるのですたとえば 0 100 200 300 400 のようにです。 なにがわるいのでしょう?

  • プログラムの作り方

    まったくの素人です。 1列にあるデータをキーにして情報の抽出をしたいのですが うまくコードが書けません。 何卒、助勢頂ければ幸いです。 よろしくお願いいたします。 具体的な内容) B列 C列 x  11 ・・適当な不要なデータが数行 y  (2A) ・・適当な不要なデータが数行 x  12 ・・適当な不要なデータが数行 y  (44) ・・適当な不要なデータが数行 x  39 ・・適当な不要なデータが数行 y  (7) ・・適当な不要なデータが数行 から、xのデータとyのデータの表を作りたい。 ただし、yのデータ()内はB列のyの次の行。 できれば、抽出したデータはシート2に並べたい。 Sub macro() Dim a As String Dim b As Variant Dim c As range Dim i As Integer a = x b = "y" i = 1 Worksheets("sheet1").range("B1").Activate For i = 1 To 5000 With ActiveCell If .Value = a Then ActiveCell.Offset(0, 1).Copy Worksheets("sheet2").Select Cells(i, 1).Select ActiveSheet.Paste Sheets("sheet1").Select Else ActiveCell.Offset(1, 0).Activate End If If .Value = b Then ActiveCell.Offset(1, 0).Copy Worksheets("sheet2").Select Cells(i, 2).Select ActiveSheet.Paste Sheets("sheet1").Select Else ActiveCell.Offset(1, 0).Activate End If End With Next End Sub

  • 数学の質問です(点Qの座標を求めよ)

    数学の質問です。 図のように直線 l ,m があり、直線mは1次関数y=-X+5のグラフである。 直線 l と直線 m、X軸との交点をそれぞれA,Bとし、直線 mとX軸との交点をCとする。 また、点BのX座標は-4で、直線l とy軸との交点のy座標は2である。 このとき、次の問いに答えよ。 y軸上に点Qをとり、△ABC=△AQCとなるようにする。このときの点Qの座標を求めよ。 ただし、点Qのy座標は負とする。 という問題です。 考え方、方法がわからないので、わかりやすく教えていただけないでしょうか。 宜しくお願いします。

  • 数学の問題の答えをお願いします

    数学の問題の解答と途上式をお願いします。 次の2次関数をy=a(x-p)^2+qの形に変形しなさい。 (1)y=-x^2-2x-1 次の関数のグラフを()内に示したように平行移動したとき、そのグラフをあらわす2次関数を求めなさい (1)y=-x^2 (x軸方向に2) (2)y=x^2 (y軸方向に5) □を埋めてください。 (1)y=2x^2-4 (y=2x^2) x軸方向に□ y軸方向に□ 頂点の座標(□、□) 軸の方程式□

  • EXCEL2000のバブルグラフがうまく描けません!

    バブルグラフを描こうとしていますが、思ったように表示されません。 そもそもバブルグラフで出来ない設定をしようとしているのかもしれませんが、アドバイスをお願いします。 元データとして、A列:名前、B列:重量、C列:単価を入力しています。 (1行目は項目名を入力してあります。) 全てのセルを範囲選択し、グラフウィザードで作成しようとしています。 作成したいのはX軸に重量、Y軸に単価のバブルを描き、バブル自体に名前を表示したいのですがどのようにしたら作成できますでしょうか?

  • 中学・数学の解説お願いします。

    中学数学の問題です。娘に説明できないので解説のほど、よろしくお願いします。 ● 右の図のように、2つの関数 y=x²・・・(1) y=ax²(a<0)・・・(2)のグラフが、点(-2、0)を通りy軸に平行な直線とそれぞれ点A、Bで交わっている。Cは線分ABの中点であり、そのy座標は 1 である。また、Pは(1)のグラフ上を動く点であり、そのy座標は正である。次の問いに答えなさい。 (1)点A,Bの座標をそれぞれ求めなさい。 (2)a の値を求めなさい。 (3)△ACPの面積が6になるときのPの座標を求めなさい。

専門家に質問してみよう