- ベストアンサー
逆インデックス関数。
逆インデックス関数。 インデックス関数は、指定された行と列の値を返しますが、行と、列を指定してデーターを入力するにはどうしたら良いのでしょうか。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
シート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列にデータを入れる。 #間違った指定に対する警告など,オマケ機能は何もしていない。
その他の回答 (8)
- tom04
- ベストアンサー率49% (2537/5117)
- tonic_tonic
- ベストアンサー率34% (142/410)
補足にあった質問にたいする回答です。 名前の定義を使えばできなくもないですが、参照するセルに名前をあらかじめつけておくことが前提になるので名前を付けるセルが多いと現実的ではないです。 例えばC1セルにD1セルを参照させたいとする場合 A1平成○○年、B1××月、C1=indirect(A1&B1)、D1にデータを入力及び名前定義に「平成○○年××月」とあらかじめ定義。 D列の参照させるデータがあまり多くなければ有効です。
- MackyNo1
- ベストアンサー率53% (1521/2850)
>例えば、100×100のセルの中の一つのセルにデーターを書き込むとき、カーソルをそこまで移動するのはとても大変です。 入力するセル番地を2つのセルに入力し、さらに入力値をもう1つのセルに合計3回入力して、特定のセルに入力する操作はあまりにも非効率なやり方ではないでしょうか? もし、F100セルに入力したいなら、画面左上の名前ボックス(アクティブセルのセル番地が表示されているところ)に「F100」と入力しEnterすればそのセルが選択できますので、そのまま入力すれば操作に無駄がないように思います。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
ということで代替案 案1 名前ボックスに F100 [Enter] でF100セルにジャンプします 案2 名前ボックスをクリックするのが面倒なら[Ctrl]+[G]ジャンプ 以下同様 案3 ほかにはハイパーリンク関数で =HYPERLINK("#"&A1&B1) そのセルをクリックして入力後、[Alt]+[←]で元に戻ってきます
- MackyNo1
- ベストアンサー率53% (1521/2850)
ご質問のような入力位置を設定することは、基本的に関数では対応できません。 たとえば列番号と行番号および入力値が入力されているセルがA1セル、B1セル、C1セルと固定されているなら、シート名の部分を右クリックして「コードの表示」で以下のようなコードをコピー貼り付けしてみてください。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range(Range("A1") & Range("B1")) = Range("C1") End Sub しかし、このような入力位置を指定するような操作は実戦の現場でほとんど考えられないと思うのですが、どのような目的でどのようなことがしたいのでしょうか? 目的によっては、関数で対応できる、もっと合理的な代替案が提示できるかもしれません。
補足
有り難うございました。 例えば、100×100のセルの中の一つのセルにデーターを書き込むとき、カーソルをそこまで移動するのはとても大変です。そこで、データ入力ページを作って、そのページから、特定のセルを指定して入力するようにしたいと考えています。 ベーシックでは、配列で変数を指定すれば、その位置に入力できたのですがそんな機能があると、指定した位置に、データを簡単に入力できると考えたのですが。どうでしょうか。
- mshr1962
- ベストアンサー率39% (7417/18945)
表示なら可能ですが、入力だと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.1のDogsivaです。 質問の意図を勘違いしていました。 入力先のセルを指定してデータを入力する関数、ということですね。 残念ながら、そのような関数はありません。 その関数が入力されているセル以外のセルの数値を変化させることはできません。 お示しの内容を実現するには、マクロを組む必要がありそうです。
- dogsiva
- ベストアンサー率32% (92/279)
行と列をともに数値として入力するのであれば、ADDRESS関数、 =ADDRESS(行番号,列番号) セルのアドレスで指定したいのであれば、INDIRECT関数が良いと思います。 =indirect(セルのアドレス)
補足
追加質問をここでして良いのか解りませんが。 もう一つ解らないので、繰り返させて下さい。 例えば、セル、A1とA2で、行と列を別々に指定して、A3に書き込んだデーター(数値、又は文字列)を書き込みたいのですが。 つまり、A1にF,A2に、100を書いておいて、A3のデーターを、F100のセルに書き込みたいのですが、どうしたら良いのでしょうか。
お礼
有り難うございました。少し、勉強させて下さい。とても参考になりました。