- 締切済み
エクセルの関数
B2から横にむかって日にち(B2=1、C2=2) A3から下にむかって番号(A2=1、A3=2) 各日、各番号によってそれぞれ数字が当てはまります。 (B3=9、B4=5等、ただこの数字は日によって変わります。) 上記表を作った後、同様な表を別シートで作った時、A1に日にちを入れたとき、B3=9等の結果を入れる事は可能でしょうか? 例えばA1に1を入れると、B3、B4の値を参照し、A1に2を入れると、C3、C4 の値を参照する感じです。 よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- bunjii
- ベストアンサー率43% (3589/8249)
勝手解釈で模擬データを作成し、質問の文言に合うと思われる数式を組み立ててみました。Excel 2007以降のバージョンで再現できるはずです。 解1はVLOOKUP関数によるものです。 Sheet2!のB3に次の数式を設定し、下へコピーしました。 =IFERROR(VLOOKUP($A3,Sheet1!$A:$AF,MATCH($A$1,Sheet1!$A$2:$AF$2,0),FALSE),"") 解2はHLOOKUP関数によるものです。 Sheet2!のD3に次の数式を設定し、下へコピーしました。 =IFERROR(HLOOKUP($A$1,Sheet1!$A$2:$AF$14,MATCH($A3,Sheet1!$A:$A,0)-1,FALSE),"") 何方の数式も計算途中でエラーが起ったときは空欄("")になります。 質問の趣旨と異なるときは模擬データと結果を提示してください。
- kagakusuki
- ベストアンサー率51% (2610/5101)
>例えばA1に1を入れると、B3、B4の値を参照し、A1に2を入れると、C3、C4の値を参照する感じです。 との事ですが、A1に2を入れた際に参照するC3、C4の値はどのセルに表示させれば良いのでしょうか? 元のシートと同じC3セル、C4セルに表示させるのでしょうか? それともA1に1を入れた際にB3、B4の値を表示させたのと同じB3セル、B4セルに表示させるのでしょうか? 取り敢えず仮の話として、A1セルに入力する日付が何日であっても、表示させるセルはB列のセルであるものとして話を進める事に致しますので、もし何か問題がある様でしたら、補足欄かお礼欄を使用して問題点をお教え頂く様にお願い致します。 今仮に、 >B2から横にむかって日にち(B2=1、C2=2) >A3から下にむかって番号(A2=1、A3=2) > 各日、各番号によってそれぞれ数字が当てはまります。 の表が作表されているシートのシート名がSheet1であるものとし、そのSheet1の表はA2:AF22のセル範囲(日付が1日~31日、番号が1~20の範囲)を占めているものとします。 又、 >同様な表を別シートで作った という箇所で質問者様が仰っておられる別シートのシート名がSheet2であるものとします。 そして、Sheet2のA列にはSheet1のA列に入力されている番号の中の幾つかが、縦に並べられて入力されているものとします。 その場合、まずSheet2のB3セルに次の様な関数を入力して下さい。 =IF(ISERROR(1/(INDEX(Sheet1!$B:$AF,MATCH($A3,Sheet1!$A:$A,0),MATCH($A$1,Sheet1!$B$2:$AF$2,0))<>"")),"",INDEX(Sheet1!$B:$AF,MATCH($A3,Sheet1!$A:$A,0),MATCH($A$1,Sheet1!$B$2:$AF$2,0))) 次に、Sheet2のB3セルをコピーして、Sheet2のB4以下に貼り付けて下さい。 これで、Sheet2のA1セルに日付を入力すると、その日付のデータがSheet2のB3以下に表示されます。 因みに、Sheet2のB3セルに入力する関数を次の様なものにした場合でも同様の働きをさせる事が出来ます。 =IF(ISERROR(1/(VLOOKUP($A3,Sheet1!$A:$AF,MATCH($A$1,Sheet1!$A$2:$AF$2,0),FALSE)<>"")),"",VLOOKUP($A3,Sheet1!$A:$AF,MATCH($A$1,Sheet1!$A$2:$AF$2,0),FALSE)) 或いは =IF(ISERROR(1/(HLOOKUP($A$1,Sheet1!$A$2:$AF$22,MATCH($A3,Sheet1!$A$2:$A$22,0),FALSE)<>"")),"",HLOOKUP($A$1,Sheet1!$A$2:$AF$22,MATCH($A3,Sheet1!$A$2:$A$22,0),FALSE)) 或いは =IF(ISERROR(1/(OFFSET(Sheet1!$A$2,MATCH($A3,Sheet1!$A$3:$A$22,0),MATCH($A$1,Sheet1!$B$2:$AF$2,0))<>"")),"",OFFSET(Sheet1!$A$2,MATCH($A3,Sheet1!$A$3:$A$22,0),MATCH($A$1,Sheet1!$B$2:$AF$2,0)))
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
A1の値を元に、B3、C3、D3…の値を得る式 =OFFSET(Sheet1!$A$3,0,A1) A1の値を元に、B4、C4、D4…の値を得る式 =OFFSET(Sheet1!$A$4,0,A1) A1の値を元に、B5、C5、D5…の値を得る式 =OFFSET(Sheet1!$A$5,0,A1) 以下同じ。
- shintaro-2
- ベストアンサー率36% (2266/6245)
それ自体は可能なのですが、 予め決められたルールに従うことになります。 もっと詳細な例を記載すれば、詳しい人が使える答えを記載してくれると思います。 例えば、シート1に日にちと番号のリストがあり、 シート2のA1に日にちを入力して シート1の対応する日にちの特定の番号に数字を入れるのであれば、 (上の質問からはそう読み取れます) 関数で実現する場合は、 シート1の各日にちの各番号のところに A1の条件によって表示するしないの関数を記載しておくことになります。 マクロやVBAで実行するのであれば、そのようなプログラムを書いて ボタンをクリックするなど何かトリガーイベントを発生させます。 下に記載された例えばの例だと >例えばA1に1を入れると、B3、B4の値を参照し、A1に2を入れると、C3、C4 の値を参照する感じです。 例えば、シート1に日にちと番号のリストがあり、 シート2のA1に日にちを入力して シート2のA1ではない場所(A2)に、シート1の対応する日にちの特定の番号の数字を表示するのであれば シート2のA2に それなりの関数を記述することになるでしょう
- DJ-Potato
- ベストアンサー率36% (692/1917)
VLOOKUP関数かHLOOKUP関数か、ですかね。 ちょっと全体像が見えないのですが、たぶんどちらかを使えば上手くいくのではないでしょうか。