- ベストアンサー
エクセル 日程表
作業時間を別フォームに転記するため、日にち指定で項目&時間を抜き出す方法がありましたら教えて下さい。 項目1...項目2...1.....2.....3..←日にち AAA.....QQQ......8..........←時間 BBB.....WWW.............6 CCC.....EEE..............2 上記のフォームを読み込み、 "別シート"に日にちを指定すると項目と時間が表示される。 例えば「2」日と指定すると BBB.....WWW...........6 CCC.....EEE.............2
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 参照元の表が Sheet1 にあり、 表の範囲は A1:L10 だとします。 (項目数:9、日にち:10日まで) 別シートを Sheet2 として B2 に 日にちを入力するものとします。 以下、作業列を使用する方法です。 * * * Sheet1 の M2セルに↓の式を入れてください。 ----------------------------------------------------- =IF(INDEX($C$2:$L$10,ROW(A1),Sheet2!$B$2)=0,"",ROW()) ----------------------------------------------------- 以下、M10 まで数式をコピーしてください。 Sheet2 の B3セルに↓の式を入れてください。 ----------------------------------------------------- =IF(COUNT(Sheet1!$M$2:$M$10)<ROW(A1),"",INDEX(Sheet1!$A$2:$L$10,SMALL(Sheet1!$M$2:$M$10,ROW(A1))-1,COLUMN(A1))) ----------------------------------------------------- Sheet2 の C3セルに↓の式を入れてください。 ----------------------------------------------------- =IF(B3="","",INDEX(Sheet1!$B$2:$B$10,MATCH(B3,Sheet1!$A$2:$A$10,0))) ----------------------------------------------------- Sheet2 の D3セルに↓の式を入れてください。 ----------------------------------------------------- =IF(B3="","",INDEX(Sheet1!$C$2:$L$10,MATCH(B3,Sheet1!$A$2:$A$10,0),$B$2)) ----------------------------------------------------- B3:D3 を選択して、11行目までオートフィルでコピーしてください。 (項目数が 9個とすれば) B2 に日にち(2 とか 3とか)を入力すれば、該当項目が表示されると思います。 Sheet1 の作業列(M列)が目障りなら、非表示にしてください。 範囲、セル位置は実際の表に合わせて適宜変更してください。
その他の回答 (3)
- tresbien
- ベストアンサー率51% (51/99)
#1です ごめんなさい、訂正してください B3は =VLOOKUP(A3,Sheet1!$A$1:$B$4,2,0) または =VLOOKUP(A3,Sheet1!$A$1:$B$4,2,FALSE) でした。 C列のも整数だけなら同様に付け足しても良いですよ、昇順に並んでいるからどっちでも良いです。
お礼
昇順というのも条件ですね ありがとうございました。
- DoragonFang
- ベストアンサー率41% (91/221)
Sheet1に下記のようなデータがあるとします。 A B C D E F G H I 1 項目1 項目2 1 2 3 4 5 6 7 2 AAA QQQ 8 3 BBB WWW 6 4 CCC EEE 2 Sheet2のA1セルに日付を入力し、A3以下に項目1、B3以下に項目3、C3以下に時間を表示するものとします。 Sheet2のA3セルに =IF(C3="","",Sheet1!A2) B3セルに =IF(C3="","",Sheet1!B2) C3セルに =IF(INDEX(Sheet2!$C$1:$AG$10,ROW()-1,$A$1)=0,"",INDEX(Sheet2!$C$1:$AG$10,ROW()-1,$A$1)) を入力して、行番号4以下に項目の数だけコピーして下さい。 C3セルの式がややこしいですが、IF関数は、時間がないところ(0と表示される)は""として何も表示しないようにするために使っています。 index関数が本来の機能で、日付の欄を探すのに、 時間が入っている範囲を指定し、 行はROW()-1(sheet2のA、B列はSheet1より1段下から始まる)で、 列は日付そのものが列番号に使えますので、そうしています。 もし、項目数が10行以上の場合は、C3セルの式の $AG$10 の10を20とか30とかに変えて下さい。 時間がない項目の行は空行になってしまいますが、それをつめていこうとすると、さらに式が複雑になってしまいます。 そこまで行くとマクロを使った方がすっきりするかも。
お礼
空行は発生はマクロということですね ありがとうございました。
- tresbien
- ベストアンサー率51% (51/99)
A _____ B _____ C _____D _____E・・・ 1 項目1...項目2...1.....2.....3..←日にち 2 AAA.....QQQ......8..........←時間 3 BBB.....WWW.............6 4 CCC.....EEE..............2 がSheet1 にあって Sheet2には A1に2を入力することにした場合 A _______ B ______ C _______ 1 ________ 2 3 BBB.....WWW....... 4 CCC.....EEE....... B3 =VLOOKUP(A3,Sheet1!$A$1:$B$4,2) B4にコピー C3 =HLOOKUP(A1,Sheet1!$C$1:$AG$4,3) C4 =HLOOKUP(A1,Sheet1!$C$1:$AG$4,4)
お礼
ありがとうございます。 Sheet2のC列はうまくいくのですが、B列が#N/Aになりました。式はコピーして実行したのですがうまく表示できませんでした。よろしくご教示願います。
お礼
ありがとうございます。 イメージとおりに抽出することが出来ました。