- ベストアンサー
昨日もエクセルの別シート参照について質問させて頂いたのですが、説明不足
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No.2です! たびたびごめんなさい。 投稿した後で、間違いに気づきました。 もしかして、↓の画像のように 体温は関係なく、○の部分をそのまま表示させたいという意味ですよね? 一応そういうことだとして・・・ 前回の方法は無視してください。 もう一度画像をアップします。 今回は作業用の列も必要ありません。 日付セルはシリアル値を入力し表示形式だけ変更してください。 画像でSheet2のE13セルに =INDEX(Sheet1!$D$4:$I$400,MATCH(E$2,Sheet1!$A$4:$A$400,0),MATCH($B13,Sheet1!$D$3:$I$3,0))&"" という数式を入れ、列方向と行方向にオートフィルでコピーすると ↓のような感じになります。 尚、数式はSheet1の400行目まで対応できるようにしていますが、 データ量によって範囲指定の領域はアレンジしてみてください。 今回の場合は行方向に複数入力があっても、ちゃんとそのまま表示できると思います。 以上、何度も失礼しました。m(__)m
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! No.3です! 希望としてはNo.3の方法でよかったのですかね? 補足欄に >セルに#N/Aと表示されてしまいました・・・ とありますが、 #N/A は「参照先に値がない」という意味の「ノー・アサイン」ですので 考えられる原因としては、 INDEX関数内の参照先、すなわち入力欄Sheetの日付や項目名がMATCH関数で参照しているものと完全一致していないことが考えられます。 今一度、両方のSheetの日付がシリアル値になっていてちゃんと一致するか? 入力欄Sheetの日付セルと表示させるSheetの日付セルをクリックし、表示形式を標準にして、確認してみてください。 それと、アップされていらっしゃる画像の配置ですと E13セルに数式を入力しなければならないと思いますが、 その数式は =INDEX(入力欄!$D$4:$I$400,MATCH(E$2,入力欄!$A$4:$A$400,0),MATCH($B13,入力欄!$D$3:$I$3,0))&"" になるのではないでしょうか? MATCH関数で参照する先のセル番地が違うような感じもします。 以上、長々と書きましたが、 他の原因でのエラーならごめんなさいね。m(__)m
お礼
丁寧なご説明ありがとうございました。 今一度、確認してみたいと思います。
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 昨日は大きく外していたようでごめんなさい。 今回も外しているかもしれませんが・・・ Sheet1の体温部分をSheet2に表示させれば良い!という解釈での方法です。 ↓の画像でSheet1に作業用の列を使わせてもらっています。 Sheet1の作業列J4セルに =A4&INDEX($D$3:$I$3,,MATCH("○",D4:I4,0)) という数式を入れ、オートフィルでずぃ~~~!っと下へコピーします。 そして、Sheet2のE13セルに =IF(ISERROR(INDEX(Sheet1!$C$4:$C$400,MATCH(E$2&$B13,Sheet1!$J$4:$J$400,0))),"",INDEX(Sheet1!$C$4:$C$400,MATCH(E$2&$B13,Sheet1!$J$4:$J$400,0))) という数式を入れ、列方向と行方向にオートフィルでコピーします。 これで画像のような感じで列方向の日付の項目に一致するセルに「○」が入力されている行の体温が表示されます。 尚、当方使用のExcel2003では列方向には256行までしかないはずですので 1年分の365列は表示できないと思います。 2007なら問題ないと思います。 そしれ、同日の日付が複数合ったり、同行に「○」が複数ある場合は正確な表示が出来ないと思います。 以上、この程度の方法ですが、 今回も的外れならごめんなさいね。m(__)m
- hana-hana3
- ベストアンサー率31% (4940/15541)
VLOOKUPで可能です。 日付をキーにしてデータを拾い出します。 まずは、sheet1 の日付が通常の日付(年月日)として入っている必要があります。 sheet2のA1に”年”、A2に"2010" と入れて下さい。 E13:=VLOOKUP(DATE($B$1,$E$1,E$2),Sheet1!$A$3:$J$370,4,TRUE) E14:=VLOOKUP(DATE($B$1,$E$1,E$2),Sheet1!$A$3:$J$370,5,TRUE) E15:=VLOOKUP(DATE($B$1,$E$1,E$2),Sheet1!$A$3:$J$370,6,TRUE) : ↑右から2つ目の数値を1ずつ増やす。 : E19:=VLOOKUP(DATE($B$1,$E$1,E$2),Sheet1!$A$3:$J$370,10,TRUE) あとは、E13:E19の範囲を選択して、右にフィルコピーすれば完了です。 -------------------------------------------------- Vlooku(DATE($B$1,$E$1,E$2),・・・・・ の部分を、 Vlookup(DATE(Sheet1!$A$4,$E$1,E$2),・・・・ と変更すれば、sheet2 の変更は不要です。 VLOOKUP関数 http://kokoro.kir.jp/excel/vlookup-false.html http://kokoro.kir.jp/excel/vlookup-true.html
補足
ご回答ありがとうございました。 自分なりに考えていたのでお礼が遅くなってしまいすみません。 上記の数式を入れてみたのですが、セルに#N/Aと表示されてしまいました。考えられる理由を教えて頂ければ幸いです。 数式は、 =INDEX(入力欄!$D$4:$I$400,MATCH(E$6,入力欄!$A$4:$A$400,0),MATCH($B30,入力欄!$D$3:$I$3,0))&"" と入力しています。