• ベストアンサー

エクセルでセルの位置を未知数に出来ますか?

エクセル2000を使用しています。 先日本を買って調べようとしたんですけどどこを見てよいやらさっぱり分からないので詳しい方ご教授ねがいます。 エクセルの位置(つまり,行と列)の部分をAやBなどの未知数に設定することは出来ないでしょうか? たとえば、あらかじめA1~10にデータ値を入力しておいて、 B1の値が「5」だったら、「A5+100」の答えをC1に表示せよ。 というときに、C1に入る式は、A1の1の部分をB1の未知数にして「=AB1+100」 ではうごかないですよね。 どうすればよいのでしょうか? 説明がへたなので分かりにくいかもしれませんが、できるだけ補足いたしますので、おしえて下さい。   

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

  • ベストアンサー
回答No.8

早速の補足有難うございます。マクロで簡単に実行することができます。 次のように操作してみて下さい。 1.新規ブックを開き、ALT+F11キーを押してVBE画面を開く。 2.画面左上にあるVBAProjectの下のSheet1をダブルクリックし、右側の白い部分に下記のコードをコピー・ペーストする。 3.再びALT+F11キーを押してエクセルの画面にもどる シート1のA1・A2・A3に適当な数字を入力してみて下さい。どれかに0が入力されていると0をD1に表示し、そうでなければA1~C1の合計がD1に表示されます。 Private Sub Worksheet_Change(ByVal Target As Range) Dim myRow As Long myRow = Target.Row If Target.Address = Range("C" & myRow).Address Then If Target.Offset(0, -2).Value = 0 Or Target.Offset(0, -1).Value = 0 Or Target.Value = 0 Then Target.Offset(0, 1).Value = 0 Else Target.Offset(0, 1).Value = Target.Offset(0, -2).Value + Target.Offset(0, -1).Value + Target.Value End If End If End Sub

satumaimo
質問者

お礼

お手数をおかけしました。さっそく実行してみます! 命令とルールを覚えれば出来そうですね。 むかしむかし、MSXのベーシックをやっておりましたので、何となく意味は分かるような気がします。 エクセルの機能を細かく覚えるよりも、マクロを使った方がやりやすいような気がします。 本を見ても、例が自分のニーズにあっていないの理解しにくいですが、これはまさに自分のニーズなのでとっつきやすく勉強できそうです! ありがとうございました!!

その他の回答 (8)

回答No.9

kazuhiko5681さんへ No.8の補足に対する、No.9のマクロですが、 D1セルに =IF(OR(A1=0,B1=0,C1=0),0,A1+B1+C1) でいいような気もするのですが? マクロについてどういうものか教えているのでしたらすみません。

satumaimo
質問者

お礼

satumaimoです。ご回答ありがとうございます。kazuhiko5681にはマクロについての作り方の例を教えていただいておりました。 マクロを使わなくてもIFで出来るんですね。 頭が悪いもので、そのような式を思いつきませんでした。 IFは使いようで便利なものですね。参考になりました。 ありがとうございます!!

回答No.7

はじめまして。 もし私でよろしければ、サンプルマクロを作ってみたいと思います。 マクロを使えば、手数なく簡単に実行することができます。 もしご希望の節は、あなた様のおやりになりたいことを詳しく具体的に教えて下さい。 お手数をおかけいたしますが、よろしくお願いいたします。

satumaimo
質問者

お礼

>お手数をおかけ・・・・ なんてとんでもないです。こちらこそ、簡単な質問をしてしまいお手数をおかけしております。前の方々のご回答により、OFFSETで解決できそうです。 でも、マクロには興味があります。何かプログラムのようなもので動かすんですよね? 別の質問になってしまいますが、こんなときはどうでしょう? D1にA1+B1+C1の答えを表示するとき、もし、A1~C1のどれか1つでも0(ゼロ)が入っていたらD1の答えを0(ゼロ)または別の表示 したい。 なんてときです。私の持っている知識では到底出来ません。 もし、お時間がありましたら宜しくお願いします。

回答No.6

3つの方法が出ましたね。 (1)OFFSET関数を使用 (2)マクロを使用 (3)INDIRECT関数を使用 (1)OFFSET関数の場合、A1~A10の範囲がA11~A20になった場合、起点をA11に変更し、  B1には常に1~10を指定することになります。 (2)マクロを使用すると、マクロを起動しなくてはならないのでB1に値を入れた後  ボタンを押すなり、メニューからマクロを呼び出すなりしなくてはなりません。 (3)INDIRECT関数の場合、A1~A10の範囲がA11~A20になった場合、B1に指定する値が  11~20に変化します。もっとも直感的でわかりやすいでしょう。 どれがいいかは好みや使う目的にあわせるとよいでしょう。

satumaimo
質問者

お礼

初心者なので出来るかどうか分かりませんが、この場合(1)で出来るかと思います。(2)、(3)も参考になりました。 ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

#1,#2回答は難しいですが、 質問のケースなら、C1セルに関数 =if(B1=5,A5+100,"")で良いのではありませんか。 B1が5でない時のことは質問に述べてないので、値を入れない、にしています。 IFで聞く部分のB1=5はどのセルでも良く、2つでも (A1+B1>3)良い。設定する値のA5+100の部分も自身C1さえ入っていなければ、A1+B2+C5とかでも良い。 これでは易しすぎるので、質問の意を汲んでいないかもしれないが、その際はご勘弁を。

satumaimo
質問者

お礼

教えていただいたIFを調べました。 B1=5でなくても、文字でもよいそうなので、たとえば、数値を文字に仮定しても使用できるという事ですね。便利かもしれません! ありがとうございました。

回答No.4

=INDIRECT("A"&B1)+100 という方法もあります。

satumaimo
質問者

お礼

勉強不足でお手数をかけました。 またひとつ、エクセルの関数の使い方を覚えました。 ありがとうございました。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

こんにちは。 C1 に =INDIRECT("A"&B1)+100 って意味でしょうか?

satumaimo
質問者

お礼

なるほど、この方法でもわかりやすいですね できあがたワークシートは、社員みんなで使用し検討するものなので直接入力してしまうのが手っ取り早いかもしれません。 ありがとうございました。

  • mneko
  • ベストアンサー率33% (46/139)
回答No.2

基本となるデータがA列にあり、そのカレントセル(A1からA10までとする) の内容をB列のn行にしてそのB列n行の内容に+100をして、C1に格納する このときC列の1行はA列の1行であるから。 このような解釈でよいでしょうか? この場合、マクロ(Visual Basic)でCells(行、列)を使ってやれば簡単に 出来ます。

回答No.1

セルC1に、 =OFFSET(A1,B1-1,0,1,1)+100 と入力してください。 OFFSETワークシート関数の詳細はヘルプを見てください。

satumaimo
質問者

お礼

ありがとうございました! ちゃんと本に載っていました。ここまで見つけるのが大変なんですよね。 ちょっとややこしいですが、解決しそうです。

関連するQ&A

  • エクセルでセルの位置を求める

    エクセルの表から複数の条件に合ったセルの位置を求めたいのですが・・・ たとえば ・|A|B| 1|3|1| 2|3|2| 3|5|1| 4|5|2|<--この行(4)を求める 5|6|1|・・・・ ・・・・・ の様な表の場合A列が5でB列が2の行(この場合4)を求めたいのですが よろしくお願いいたします。

  • エクセルで複数の条件のセル数をそれぞれ合計したい

    エクセルで複数条件のセルにそれぞれ分類を分け(判定)、分類ごとにセル数の合計を出したいのですが、この場合のセル合計を簡単に計算する条件式はないでしょうか?(分類項目はIF、AND関数を使って結果表示しています) 例)C列に分類AとBが0の時"*"、Aが1・Bが0の時"2"、ABとも1の時"1"、ABとも空欄の時空欄" "と判定し、"*"・"2"・"1"それぞれのセル数を合計したいのですが・・・。   列 A B C      行 1  0 0 *    2  1 0 2    3  1 1 1    4     ・        ・ どなたかご教示よろしくお願いします。

  • 数学得意な方教えてください(未知数と式の数)

    誰か教えてください 0.08a+0・05b=0.06(a+b) 0.08a=0.01c(a+b) の連立方程式です。高校生のときに未知数の数が3つなら、式は3つ必要だと習った気がします。上の場合未知数3つで式は2つですが、この方程式を解くことはできますか?もともとは食塩水の文章題ですが、式はこれであっているようです。ここから解けません。 どなたかよろしくお願いします。

  • 【エクセル】左隣のセルが「2」となっているセルの数を数えたい。

    いつもお世話になってます。 エクセル2003について、以下の条件を満たす関数式を教えてください。 A列にa、b、c、d、eと5種類の1文字がランダムに入力されています。 B列に1、2、3と3種類の数字1つが同様に入力されています。 ・左右のセルの組み合わせが「a」「2」となっている数だけ数えたいのですがどのような式で計測すれば良いのでしょうか? ・言い方を変えると、右隣が「2」の「b」のセルの数を数えたいのです。 ・オートフィルターは使わないこととします。 たびたびすみません。よろしくお願いします。

  • Excelにて複数条件を満たす行の特定のセルの値を返す関数

    Excelにて複数条件を満たす行の特定のセルの値を返す関数を作りたいのですが、上手く行きません。 <Sheet1>   A列  B列  C列 1 2008/6/1 ★  320 2 2008/6/1 ☆  300 : : : Sheet2のA1に、「A列が2008/6/1で、B列が☆の場合、C列の値を返す」という関数を入れたいのですが、どうも上手く行きません。 良い式がありましたら教えて下さいm(_ _)m

  • 1つの項に2つの未知数を含まないように変形するには

    次のような、4未知数の連立する方程式が4つあります。 この連立方程式をガウスの消去法で解きたいのですが、θが他の未知数(x,y,z)と同じ項にあって、解けません。 この方程式をガウスの消去法で解けるような、1つの項に未知数が一つの形に変換するにはどのようにすればよいのでしょうか? 式) cos(θ)*x - sin(θ)*y - P*z + cos(θ)*A - sin(θ)*B - P*C = 0 未知数:θ, x, y, z 定数:A, B, C, P 未知数全てと、C以外の定数(A, B, P)は0を取り得ます。 よろしくお願いします。

  • 未知数4で方程式4つなのに解けない

    中学レベルの数学だと思いますが、解けない理由が分からないので、 初めて質問します。 下記のように、未知数4で、方程式が4つあります。 a+b=239 c+d=424.4 a+c+26.6=490 b+d=200 確か、未知数と方程式の数が同じであれば、解は求められると学んだと思います。 何か大きな勘違いをしているのですが、分からず、 アドバイスをいただきたく思います。

  • Excelで文字列が含まれている値から最小値を取り出す

    こんにちは。Excelの関数での質問です。 Excelで以下のようなデータがあった場合   A列   B列   C列 (1) 1    2    AB10001 (2) 1    2    CD10003 (3) 1    2    CD10002 (4) 1    2    AB10004 (5) 3    4    ZZ99999 (6) 3    4    ZZ00000 A列、B列の値が同じ行で、C列の左2桁が等しい値の中から最小を 取り出したいです。 このデータの場合、A列「1」、B列「2」のレコードでは C列の「AB10001」、「CD10002」が取り出したいです。 A列「3」、B列「4」のレコードでは C列の「ZZ00000」が取り出したいです。 以上、よろしくお願いいたします。

  • Excel セル内の式

    Win2000 Excel2000 いつもお世話になっております A列に「○」と「×」の2種類の値が設定されます B列には手入力した、数値が入ります(ここに式は設定しません) 上記内容でデータがN件設定されます ルールとしましては A列が○の時B列の値はプラス A列が×の時B列の値はマイナスとなります 但し、B列にプラスやマイナスの記号は表示しません B列の合計をC1に式を組むことにより、求めたいのですが可能でしょうか? Ex) A列  B列    C1 = 25 ←(式により25を求めたいです) ○    10 ○    20 ×    5  ・    ・  ・    ・

  • エクセルで数式を作りたいのですが・・・

    エクセルについての質問です。 下記のように7行目にカウンター(マクロ)を作っているとします。  列  A       B      C  行        来客数    11時(現在時刻)  1  10(時)    2  11(時)    4  3  12(時)  4  13(時)  7  来客数     4  @(←ボタン) 上記のようなエクセルシートでボタン(@)を押すとC列の時刻とA列で同じ時刻の行B列に値を反す式をご示唆ください。お願いいたします。ちなみに現在時刻は=TODAYから=HOUR()で反しています。

専門家に質問してみよう