• ベストアンサー

Excelにて、参照先のセル列を求めるには?

教えて頂きたいのですが、 Excelにてシート1に、1の段から9の段までの九九表があります。 その九九表よりシート2のA1に『=』で、 ランダムに答えを持ってくるとします。 そしてさらに、シート3のA1に、シート2のA1を参照して シート1の列が出せるようにするには どうすれば良いのでしょうか? 例を出すと、 シート1のD6=24 (D=4列目 、 6=6行目)を、 シート2のA1に参照させました。 シート2のA1には24(式は『=D6』)が入っています。 シート3のA1にシート2のA1を参照させて、 『4』(4列目)と表示させるには どういう関数式を入れれば出来ますか? もちろんシート2のA1は その都度ランダムで、入れるセル番号が変わります。 また、九九表というのはあくまで例です。 実際には専門用語の入った一覧表になっていますので、 九九のような、前後に関連性がある表ではありません。 ただ、参照しているセルの前のセルまで さかのぼってセル情報を取得出来る方法を知りたいのです。 こういうことって可能でしょうか? 分かる方教えて下さい。宜しくお願い致します。

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

  • ベストアンサー
  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.2

んー・・・横または縦一列の中から数字を探すのは MATCH関数で可能ですが・・・  =SUMPRODUCT((Sheet1!A1:I9=Sheet2!A1)*COLUMN(Sheet1!A1:I9)) こんなんどうでしょう。 Sheet1の範囲とSheet2A1を比較して、同じであれば TRUE(1)、違えば FALSE(0)、それに比較したセルの列番号を掛けて、最終的に和を求めています。 ただし、SUMPRODUCT関数は和を求めていますので、複数該当するセルがあると正確な数字は返ってきません。 COUNTIF関数を使って該当するセルが複数ない事を確認してください。  =COUNTIF(Sheet1!A1:I9,Sheet2!A1) ・・・こんなでどうでしょう。

guchi_yama
質問者

お礼

おおぉぉ~!うまい具合に出来ました!! どうもありがとうございました。 また何かありましたら宜しくお願い致します。

その他の回答 (1)

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

九九の例を挙げているが、>専門用語の入った一覧表になっていますので、とあるので、例が悪いのではないですか。 九九の表は数から列や行が割り出せそうだから。 ーー シート1の文字列の(専門用語の)表がある。 ある専門用語はシート1上で、2度出てこないとする。 別シートでその用語を指定すると、シート1のその専門用語のあるセルの行番号と列番号を出すという問題かなと思う。 ーー セルをまたがって=セル範囲で、文字列を検索するのは、 MATCH関数しかない。 しかしMATCH関数は、多列を範囲指定できない。 VBAでユーザー関数でもまないとこれは達成不可能。 他に適当な検索関数も見つからない。 ーー VBEの標準モジュールに Function fndr(x) Set x = Range("A1:C5").Find(what:=x) fndr = x.Row End Function Function fndc(x) Set x = Range("A1:C5").Find(what:=x) fndc = x.Column End Function をコピペ。 (ユーザー定義関数) ーー シート1に 例データ Sheet1 A1:c5 a c q s e w d x r f b y g n u どこでも良いが、Sheet1のF1セルにXを入れる。 Sheet2のF1あたりが、質問と合うかも知れない。 上記以外のセルに (質問ではSheet3のセルが合うのかもしれない) =fndr(F1)  で 3 他のセルに =fndc(F1) で 2 大分質問の例内容をを変えたが、質問の主旨と違う場合は、すみません、無視してください。 なお、他シートの場合、=fndr(Sheet2!F1) のようにしてください。

guchi_yama
質問者

お礼

例が悪くて申し訳ないです;; たくさんの文字が並ぶ中からという意味で九九を取り上げたのですが、 逆に混乱を招いたようですね。すいませんでした。 単純に、 シート1のセルD6に24と言う数字が入っています。 シート2のセルA1に『=Sheet1!D6』を入れ、 シート3でシート2のA1を参照して 『4』や『D』や『D6』や『Sheet1!D6』といった、列に結びつく答えを 導き出せないかと思ったのですが、無理ですよね? お答えにもあった=MATCH()で出来ないかと思い、試行錯誤してみましたが、 シート2からシート1の場所を導き出すのは出来ませんでした。 一度上記のプログラムにて試してみます。 ご回答ありがとうございました。

関連するQ&A