- ベストアンサー
エクセル2007を使用しております。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>似たような質問を見ていろいろやってみたのですがうまくいかない 計算の理屈を追いかけながらゆっくりやっていくと,いつか出来るようになります。 添付図: C2: =IF(Sheet2!A2="","",IF(COUNTIF(A:A,Sheet2!A2),"",ROW(A2))) D2: =IF(ROW(D1)>COUNT(C:C),"",INDEX(Sheet2!A:A,SMALL(C:C,ROW(D1)))) をそれぞれ下にコピー。 参考: =INDEX(Sheet2!A:A,SMALL(IF(COUNTIF(A:A,Sheet2!$A$1:$A$20),999,ROW(Sheet2!$A$1:$A$20)),ROW(A1)))&"" と入れてコントロールキーとシフトキーを押しながらEnterする。
その他の回答 (2)
- kagakusuki
- ベストアンサー率51% (2610/5101)
回答番号:ANo.1です。 申し訳御座いません、先程の回答で、シート1のC2セルに入力する数式に、一部間違いが御座いました。 正しくは以下の通りです。 =IF(ROWS($2:2)>COUNT('シート2'!$B:$B),"",INDEX('シート2'!$A:$A,MATCH(ROWS($2:2),'シート2'!$B:$B,0))) 尚、シート2のB2セルに入力する数式の方は、間違いは御座いません。
お礼
ありがとうございます。 関数あまり理解できてないため参考書片手に勉強したいと思います。
- kagakusuki
- ベストアンサー率51% (2610/5101)
シート2の適当な列(ここでは仮にB列とします)を作業列として使用する方法です。(必ずしもシート2でなくとも構いません) 尚、数式の都合で、シート2のA列にある従業員の名前は、2行目から始まっていて、A1セルには項目名が入力されていても、空欄となっていても、何でも良いですから、従業員の名前だけは入力されていない状態として下さい。 まず、シート2のB2セルに次の数式を入力して下さい。 =IF(ISNA(MATCH($A2,'シート1'!$A:$A,0)),COUNT(B$1:B1),"") そして、シート2のB2セルをコピーして、B3以下のセル(A列に従業員名が入力されている全ての行)に貼り付けて下さい。 次に、シート1のC2セルに次の数式を入力して下さい。 =IF(ROWS($1:1)>COUNT('シート2'!$B:$B),"",INDEX('シート2'!$A:$A,MATCH(ROWS($1:1),'シート2'!$B:$B,0))) そして、シート1のC2セルをコピーして、C3以下のセルに貼り付けて下さい。(休みを取る従業員数の最大値だけ貼り付ける) 以上で完成です。
お礼
関数をちゃんと理解できていないと無理ですよね(^^; 参考書片手に今勉強中です。 画像まで貼ってくださって、とてもわかりやすかったです。 ありがとうございました。