• ベストアンサー

逆インデックス関数。

逆インデックス関数。 インデックス関数は、指定された行と列の値を返しますが、行と、列を指定してデーターを入力するにはどうしたら良いのでしょうか。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.7

シート1のA列に行,B列に列,C列にデータを記入する。 シート2の所定のセルに所定のデータが入る。 手順: マクロのセキュリティを中にしてエクセルを再起動する。(意味が分からないときはご利用のソフトのバージョンも添えて別途質問し回答を得てから戻ってきてください) シート1を開く シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval Target as excel.range)  dim h as range  dim ha as range  dim hx as range  on error resume next  set hx = application.intersect(target, range("C:C"))  if hx is nothing then exit sub  for each ha in hx.areas   for each h in ha    if application.counta(cells(h.row, "A").resize(1, 3)) = 3 then     if isnumeric(h.offset(0, -1)) then    worksheets("Sheet2").cells(h.offset(0, -2), h.offset(0, -1)) = h     else    worksheets("Sheet2").range(h.offset(0, -1) & h.offset(0, -2)) = h     end if    end if   next  next end sub ファイルメニューから終了してエクセルに戻る A,B列に2と3とか5とBとか記入し,C列にデータを入れる。 #間違った指定に対する警告など,オマケ機能は何もしていない。

tsr400
質問者

お礼

有り難うございました。少し、勉強させて下さい。とても参考になりました。

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

その他の回答 (8)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.9

こんばんは! No.4さんの補足に >そのページから、特定のセルを指定して入力するようにしたいと考えています。 とありましたので・・・ 参考になるかどうか判りませんが、一つの案です。 ↓の画像でA1セルに列番号・A2セルに行番号を入力します。 そして、A3セルには =HYPERLINK("#"&A1&A2,"↑のセルへジャンプ") という数式を入れています。 これでA1・A2セルにジャンプしたいセル番地を入力し、A3セルをクリックすると そのセルがアクティブになると思います。 以上、参考になればよいのですが 他によい方法があれば読み流してくださいね。m(__)m

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

補足にあった質問にたいする回答です。 名前の定義を使えばできなくもないですが、参照するセルに名前をあらかじめつけておくことが前提になるので名前を付けるセルが多いと現実的ではないです。 例えばC1セルにD1セルを参照させたいとする場合 A1平成○○年、B1××月、C1=indirect(A1&B1)、D1にデータを入力及び名前定義に「平成○○年××月」とあらかじめ定義。 D列の参照させるデータがあまり多くなければ有効です。

全文を見る
すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.6

>例えば、100×100のセルの中の一つのセルにデーターを書き込むとき、カーソルをそこまで移動するのはとても大変です。 入力するセル番地を2つのセルに入力し、さらに入力値をもう1つのセルに合計3回入力して、特定のセルに入力する操作はあまりにも非効率なやり方ではないでしょうか? もし、F100セルに入力したいなら、画面左上の名前ボックス(アクティブセルのセル番地が表示されているところ)に「F100」と入力しEnterすればそのセルが選択できますので、そのまま入力すれば操作に無駄がないように思います。

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

ということで代替案 案1 名前ボックスに F100 [Enter] でF100セルにジャンプします 案2 名前ボックスをクリックするのが面倒なら[Ctrl]+[G]ジャンプ 以下同様 案3 ほかにはハイパーリンク関数で =HYPERLINK("#"&A1&B1) そのセルをクリックして入力後、[Alt]+[←]で元に戻ってきます

全文を見る
すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

ご質問のような入力位置を設定することは、基本的に関数では対応できません。 たとえば列番号と行番号および入力値が入力されているセルがA1セル、B1セル、C1セルと固定されているなら、シート名の部分を右クリックして「コードの表示」で以下のようなコードをコピー貼り付けしてみてください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range(Range("A1") & Range("B1")) = Range("C1") End Sub しかし、このような入力位置を指定するような操作は実戦の現場でほとんど考えられないと思うのですが、どのような目的でどのようなことがしたいのでしょうか? 目的によっては、関数で対応できる、もっと合理的な代替案が提示できるかもしれません。

tsr400
質問者

補足

有り難うございました。 例えば、100×100のセルの中の一つのセルにデーターを書き込むとき、カーソルをそこまで移動するのはとても大変です。そこで、データ入力ページを作って、そのページから、特定のセルを指定して入力するようにしたいと考えています。  ベーシックでは、配列で変数を指定すれば、その位置に入力できたのですがそんな機能があると、指定した位置に、データを簡単に入力できると考えたのですが。どうでしょうか。

全文を見る
すると、全ての回答が全文表示されます。
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

表示なら可能ですが、入力だとVBAを利用するしかありません。 下記は一例です。図形等をシート状に配置してマクロの登録を利用してください。 A2:A100に列文字、B2:B100に行数字、C2:C100に入力する文字として Sub TEST() On Error GoTo ERSET Dim RG As Range For Each RG In Range("A2:A100") RX = RG & RG.Offset(0, 1) Range(RX).Value = RG.Offset(0, 2) ERNXT: Next RG Exit Sub ERSET: Resume ERNXT End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • dogsiva
  • ベストアンサー率32% (92/279)
回答No.2

No.1のDogsivaです。 質問の意図を勘違いしていました。 入力先のセルを指定してデータを入力する関数、ということですね。 残念ながら、そのような関数はありません。 その関数が入力されているセル以外のセルの数値を変化させることはできません。 お示しの内容を実現するには、マクロを組む必要がありそうです。

全文を見る
すると、全ての回答が全文表示されます。
  • dogsiva
  • ベストアンサー率32% (92/279)
回答No.1

行と列をともに数値として入力するのであれば、ADDRESS関数、 =ADDRESS(行番号,列番号) セルのアドレスで指定したいのであれば、INDIRECT関数が良いと思います。 =indirect(セルのアドレス)

tsr400
質問者

補足

追加質問をここでして良いのか解りませんが。 もう一つ解らないので、繰り返させて下さい。 例えば、セル、A1とA2で、行と列を別々に指定して、A3に書き込んだデーター(数値、又は文字列)を書き込みたいのですが。  つまり、A1にF,A2に、100を書いておいて、A3のデーターを、F100のセルに書き込みたいのですが、どうしたら良いのでしょうか。

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

関連するQ&A

  • インデックス関数の応用で・・・

    仕事で使うエクセルシートを作成中で困っております。 知恵を貸して下さい。 インデックス関数でいう行の値を返したいです。 列と交わる部分にはデータが入っており、 列が○○で、交わる部分に××が入っていれば、 行の値を返す。 このようにしたいのですが、 どのようにしたらよいでしょうか>< よろしくお願いします。

  • INDEX関数がエラーになるのはなぜ。

    INDEX関数で、二つの領域から、値を取り出すとき、領域指定の所で、入力した後、タブキーを押して、何行目かというのを入力しようとすると、エラーになり、#Valueと表示され、値が取り出せないのは、なぜですか。 2つの表のうち、条件を指定して、取り出すとき、正しい値が取り出せないのです。 やり方は、間違っていないはずなのに。なぜでしょう。 教えてください。 ひとつの表から値を取り出す方はちゃんとできるのですが。

  • INDEX関数を使用した関数の意味を教えてください。

    INDEX(sheet2!C:C,SMALL(INDEX((sheet2!$B$1:$B$100<>$B$18)*10^4+ROW($1:$100),),ROW(A1)))&"" sheet2にある表のB列に検索時に使用する文字列があり、sheet1のB18にその検索したい文字列を入力すると、一致したB列と同じ行のC列のデータを抽出する式です。 表のデータは今後も増加しますが、どの程度増加するは不明です。 INDEX関数やSMALL関数など一つ一つの関数の意味はわかっているつもりですが、なぜ上記のセルが選択されているのかわかりません。 特にSMALLの後の式がわかりません。 エクセル関数にはあまり詳しくないので、この式の意味をできれば詳しく教えていただけないでしょうか? (式の意味は人から聞いたものですが、違っていたらすいません)

  • Excel2010でのHLOOKUP関数

    Excel2010で列(縦方向)に1組のデータ(200個程度)を入れ、現在140組のデータが入っています。別シートに票を作成し、票内の各セルにHLOOKUP関数を入れ、この140列×200行のデータベースから、指定した列(検索値)のそれぞれの行からデータを抽出し表示するようにしています。 これまでは、検索値を入力すると、該当する列内の値を票内に反映していてくれていたのですが、この度新たな列を増やしたところ、その列の値を表示してくれません。関数内のデータの範囲はその列以上に広く指定しています。わかりにくい説明で申し訳ないのですが、考えられる原因はありますか。よろしくお願いします。

  • Excel2000ですがINDEX関数の使い方がよく分かりません。

    Excel2000ですがINDEX関数の使い方がよく分かりません。 開こうとすると、マクロにはウィルスが含まれている可能性があるとかの警告が出るのですが、この意味が実はよく分かりません。ちゃんとした勉強サイトからDLしたもので、ウィルスチェックしても感染ファイルはゼロと出るので安全だとは思うのですが・・・。 Excelの問題を見て頂けますか?→http://www.geocities.jp/rankei32000/book1.xls ダメなら→http://www.geocities.jp/rankei32000/yookyuusho1.htm 先ず、どのようにしたら、こんなカウンターのような便利なものが作れるのでしょうか? 作り方を教えて頂けませんか? INDEX関数をにわか勉強したばかりで余りまだよく分かっていません。行と列で指定するようですが、今回の問題ではどう考えたらいいのでしょうか? 「カウンターのようなもの(黄色地にコードと書かれた部分)」が「行」に相当するようですが、何故これが「行」に相当するのでしょうか? INDEXというよりもVLOOKUPのような指定の仕方に見えますが・・・。 よろしくお願いします。

  • EXCEL2000で関数INDEXとMATCHを使った際の表示について

    EXCEL2000で関数INDEXとMATCHを使った際の表示について お聞きしたいのですが、別シートでリストが有りそのリスト内のリストNoを別シートで入力すると項目が自動表示される様に関数を入力したのですが、リストでは1行に2段表示にして作成しているのですが別シートに自動表示した際1行で表示されます。リストと同じ表示するにはどうすればよいのでしょうか、わかる方宜しくお願いします。 ちなみにわかりずらいかもしれませんが現在下記の様に表示されます。 現在の関数式 =INDEX(**リスト!$B$4:$B$50,MATCH(**データ!D2,**リスト!$A$4:$A$50,0)) 表示例 (リスト側)        (データ側)     A(列)           A(列)  1(行) あああ    1(行) あああいいいいい   いいいいいい 

  • EXCEL関数で教えてください。

    B列に3行おきに名称があります。 C列にその名称ごと(3行ごと)のロット数 D列にその名称ごと(3行ごと)の値A E列にその名称ごと(3行ごと)の値B が入力されています。 そのデータを名称ごとに1行にまとめる場合の関数を教えてください。

  • エクセルの関数についての質問です

    エクセルの関数についての質問です 独学でエクセルを勉強しておりますが以下のような表の中から該当する値を返すことは可能でしょうか。 方法はどのようなものでもアドバイスをいただければトライしてみようと思います。 以下のような元データの中から、行の条件と列の条件を満たすセルに表示されている値(%)を 表示させる関数。そもそも関数での解決は不可能かもしれませんが、もし方法があれば ご教示お願いします。       0000~1000  1001~2000  2001~3000 000~100    5%      5%      4% 101~200    4%      4%      3% 201~300    3%      2%      1% 行と列の値を入力するとその交差した値が表示させたい。 例)行の検索したい数値を110、列の検索したい数値を1200と指定した場合、表示させたい数値は"4%"。 ぜひぜひよろしくお願いいたします。

  • INDEX関数について

    他の人の質問で回答がありましたが、少し私に分からないところがありました。表には、24や33,19,77などの数字があり、この表から偶数の数と奇数の数を求める関数なのですが、 こう回答がありました。 その1 奇数の数 =COUNT(INDEX(0/(MOD(A1:D4,2)=1),)) この関数で奇数の数が求められるそうですが、このINDEX(0/がよく分かりません。INDEX(範囲、行番号、列番号)ですが、 この関数式を詳しく説明してほしいのです。 よろしくお願いします。 偶数は、全体から奇数の数を引くということでいいのですが、

  • INDEX関数の参照範囲にセルを指定する方法

    INDEX関数で別のエクセルファイルからデータを取得したい。 現状、ファイルパスを直接指定してデータを取得しておりますが ファイルパスを入力したセルを参照範囲に指定してデータを取得できるようにしたいです。 INDEX関数を入力するエクセルファイルをFile①、 別のエクセルファイルをFile②とする。 File②のファイルパスをFile①のA1セルに入力し、 INDEX関数の引数にA1を指定してデータを取得することはできますか?

専門家に質問してみよう