作業時間を別フォームに転記するため、日にち指定で項目&時間を抜き出す方法がありましたら教えて下さい。

項目1...項目2...1.....2.....3..←日にち
AAA.....QQQ......8..........←時間
BBB.....WWW.............6
CCC.....EEE..............2

上記のフォームを読み込み、
"別シート"に日にちを指定すると項目と時間が表示される。

例えば「2」日と指定すると
BBB.....WWW...........6
CCC.....EEE.............2

A 回答 (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列)が目障りなら、非表示にしてください。
範囲、セル位置は実際の表に合わせて適宜変更してください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
イメージとおりに抽出することが出来ました。

お礼日時:2005/04/08 19:09

#1です



ごめんなさい、訂正してください
B3は  =VLOOKUP(A3,Sheet1!$A$1:$B$4,2,0)   
または  =VLOOKUP(A3,Sheet1!$A$1:$B$4,2,FALSE)
でした。
C列のも整数だけなら同様に付け足しても良いですよ、昇順に並んでいるからどっちでも良いです。
    • good
    • 0
この回答へのお礼

昇順というのも条件ですね
ありがとうございました。

お礼日時:2005/04/08 20:03

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とかに変えて下さい。

時間がない項目の行は空行になってしまいますが、それをつめていこうとすると、さらに式が複雑になってしまいます。
そこまで行くとマクロを使った方がすっきりするかも。
    • good
    • 0
この回答へのお礼

空行は発生はマクロということですね
ありがとうございました。

お礼日時:2005/04/08 20:06

   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)
    • good
    • 0
この回答へのお礼

ありがとうございます。
Sheet2のC列はうまくいくのですが、B列が#N/Aになりました。式はコピーして実行したのですがうまく表示できませんでした。よろしくご教示願います。

お礼日時:2005/04/08 15:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング