- ベストアンサー
エクセルについての質問です。関数で可能かどうか
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
シート2に次々と5分ごとにデータが入力されるとしたら、お求めのシート1のシートでもシート2の変化に対応した表を時間の変化も含めて対応させ作成することが良いでしょう。すなわちシート1ではシート2のA列に入力された5分間隔での時間の最新の時間と最も古い時間を考慮して表を作成することにします。 表1では予め時間のデータを入力しておく必要はありません。 例えばシート2ではお示しのようにA1セルから下方に5分ごとに降順で、B1セルから下方には下、上などの入力がされているとします。 シート1ではA列からH列までに表を完成させるとしてA2セルには次の式を入力してH2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(LOOKUP(10^10,Sheet2!$A:$A)+"0:05"*(INT((COLUMN(A1)-1)/2)+ROW(A1)*4-4)>MAX(Sheet2!$A:$A)+"0:02","",IF(MOD(COLUMN(A1),2)=1,LOOKUP(10^10,Sheet2!$A:$A)+"0:05"*(INT((COLUMN(A1)-1)/2)+ROW(A1)*4-4),INDEX(Sheet2!$B:$B,MATCH(OFFSET(A2,0,-1)-"0:02",Sheet2!$A:$A,-1)))) これでシート1で予め時間を入力しておく必要もありませんし、シート2の範囲に無い時間は表示されません。 なお、上記の式で0:02などの時間が加えられたり引かれたりしていますが、これは時刻などの比較処理においては時刻のシリアル値の小数点以下の数値の比較にしばしば問題があることからそれを解消するために使っています。
その他の回答 (3)
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
こういうのはINDEX(MATCH)の式か、VLOOKUP関数で検索する典型例です。INDEX(MATCH)については、No.1さんが書かれているとおりです。VLOOKUPは列の位置に制約があったりしますが、だいたいINDEX(MATCH)と同じことができます。いずれも頻繁に使うので、覚えましょう。ベストアンサーは辞退します。
- ka28mi
- ベストアンサー率41% (969/2315)
シート1の上下データを入れたい場所、たとえばB1セルに「=INDEX(Sheet2!$A:$B,MATCH(Sheet1!A1,Sheet2!$A:$A,FALSE),2)」と入れます。 これは、シート2のA~B列を基表として、シート1のA1セルと同じ値が入っている行の2列目(つまりB列)の値を持ってこいという関数です。 アンマッチがなければ、これで問題ないと思います。 アンマッチがあった場合は、空白にしたいのかエラーにしたいのかで対応が変わります。ちなみに、上の式ではエラーになります。 蛇足ですが、エクセルの場合はバージョンを書いておかれた方がいいと思いますよ。 上の式でしたら、エクセル97の時代に既にあった関数ですので、まず問題ないと思います。
補足
空白にしたいのですが、どうすればよいのでしょう?エクセル2003
お礼
解決しました。ありがとうございました。