[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VLOOKUP関数』(初級)
Sheet1に計画表を作り、Sheet2に点呼簿を作りました。
計画表には、社長・・・公休 と入れますが、点呼簿には、公休以外の者の
名前だけを表示したいのですが?
=IF(COUNTIF($G$5:$H$26,$AJ5),VLOOKUP($AJ5,$G$5:$S$26,3,FALSE),IF(COUNTIF($V$5:$V$26,$AJ5),VLOOKUP($AJ5,$V$5:$AF$26,2,FALSE),""))
とすると、公休の人の名前も表示されてしまいます。
どう訂正したら良いですか??
さぁ、、残るは初級さんだけやね。。 でも、わかりません。 >社長・・・公休 これはどういう意味?? シートは二枚ある様だけど、式にシートの指定はないみたいだし。。。 もう少し詳しくかいてくださいませんか? =IF(COUNTIF($G$5:$H$26,$AJ5),VLOOKUP($AJ5,$G$5:$S$26,3,FALSE), IF(COUNTIF($V$5:$V$26,$AJ5),VLOOKUP($AJ5,$V$5:$AF$26,2,FALSE),"")) (SoulMan)
式は具体的にあげていただいているのですが、 ・シート1とシート2の関連性が判らない ・式に入っている各範囲の内容が判らない ため、エラーの原因(なぜ公休の人が表示されるのか)にたどり着きません・・・ 参照個所が数箇所ありますので、それぞれ何が入っているのかを教えてください。 (shouta)
すみません・・・雑な説明で・・・ Sheet1は毎日の計画表を作ります。 A B C D E F G H I 〜 名前 車番 行き先 開始時刻 終了時刻 作業内容 名前 車番 行き先 田中 248 岡山 と50人分ほど入力していきます。(A3サイズの決まった様式です) Sheet2には、点呼簿があって A B C D 名前 車番 作業内容 乗務点呼 とあります。 田中 248 岡山 Sheet1で入力した"公休”以外の内容を表示したいのですが・・・ Sheet1のMに、 =IF(COUNTIF($A$3:$F$26,$N3),VLOOKUP($N3,$A$3:$D$26,2,FALSE),IF(COUNTIF($G$5:$M$26,$N3),VLOOKUP($N3,$G$5:$M$26,2,FALSE),"")) と同じくSheet2に表示したい項目のBとFを纏めました。
Mの列に =IF(OR($Q3="公休",$Q5="年休"),"",1)))) として Sheet2のAに =IF(COUNTIF('計画表'!M:M,1),INDEX('計画表'!$A:$A,SMALL(IF(COUNTIF('計画表'!M:M,1),ROW('計画表'!$A$5:$A$50)),ROW(A1)))) ってしてみたけれど・・・全部表示されるので 頭が???になってしまいました。 関数が解ってないので、すみません。 すみません・・・雑な説明で・・・ Sheet1は毎日の計画表を作ります。 A B C D E F G H I 〜 名前 車番 行き先 開始時刻 終了時刻 作業内容 名前 車番 行き先 田中 248 岡山 と50人分ほど入力していきます。(A3サイズの決まった様式です) Sheet2には、点呼簿があって A B C D 名前 車番 作業内容 乗務点呼 とあります。 田中 248 岡山 Sheet1で入力した"公休”以外の内容を表示したいのですが・・・ Sheet1のMに、 =IF(COUNTIF($A$3:$F$26,$N3),VLOOKUP($N3,$A$3:$D$26,2,FALSE),IF(COUNTIF($G$5:$M$26,$N3),VLOOKUP($N3,$G$5:$M$26,2,FALSE),"")) と同じくSheet2に表示したい項目のBとFを纏めました。 Mの列に =IF(OR($Q3="公休",$Q5="年休"),"",1)))) として Sheet2のAに =IF(COUNTIF('計画表 (木)'!AI:AI,1),INDEX('計画表 (木)'!$AJ:$AJ,SMALL(IF(COUNTIF('計画表 (木)'!AI:AI,1),ROW('計画表 (木)'!$AJ$5:$AJ$50)),ROW(A1)))) ってしてみたけれど・・・全部表示されるので 頭が???になってしまいました。 関数が解ってないので、すみません。 ちょと修正したけど、あってるかな?? (SoulMan)
すいません。Sheet2のAの式は =IF(COUNTIF('計画表'!M:M,1),INDEX('計画表'!$A:$A,SMALL(IF(COUNTIF('計画表'!M:M,1),ROW('計画表'!$A$5:$A$50)),ROW(A1)))) です! =IF(COUNTIF('計画表 (木)'!AI:AI,1),INDEX('計画表 (木)'!$AJ:$AJ,SMALL(IF(COUNTIF('計画表 (木)'!AI:AI,1),ROW('計画表 (木)'!$AJ$5:$AJ$50)),ROW(A1)))) この式では、訳わかんないですよね・・・
それで、「公休」というのは何列目に入れるの?? http://ryusendo.no-ip.com/cgi-bin/upload/src/up0242.xls 独断と偏見で作ってみました。 A列の「公休」以外をSheet2に抽出します。どうでしょうか? =IF(SUM((Sheet1!A2:A27<>"公休")*1)<ROW(A1:A26),"", INDEX(Sheet1!A2:I27,SMALL(IF(Sheet1!A2:A27<>"公休",ROW(A1:A26)),ROW(A1:A26)),COLUMN(A2:I27))) すみません。サンプルの式は直しませんが、↑が正解です。 (SoulMan)
見づらかったので整形だけでも、っと思ったらSoulManさんが、修正を書いてたのね。 アハハ、ダブってるけどそのままにしときます。
初級さんの書き込みで気になった点だけ書いておきます。 >SMALL(IF(COUNTIF('計画表'!M:M,1),ROW('計画表'!$A$5:$A$50)),ROW(A1)) だと、計画表シートのM列に1が1個でもあれば、行No.を返す。となってます。 このため、全て表示されているのでは? 例えば、 SMALL(IF('計画表'!$M$5:$M$50=1,ROW('計画表'!$A$5:$A$50)),ROW(A1)) の様にすれば、M5:M50のセルが、1 のものだけ 行No.が返されます。 >Mの列に =IF(OR($Q3="公休",$Q5="年休"),"",1)))) Q3とQ5 って行が違いますが、一緒にしても良いのでしょうか??? ここが、一番の疑問点です。 あと、計画表のA列とG列の名前部分が、同一の人を表示するのならば、行き・帰り 等の使い方かな? と、まだ納得(A列だけで良いのでは、と思いますが)できるのですが、 違う人が入るとするならば、M列の扱い方が???です。 何の解決にもならないと思いますが、整形のご報告+α でした。(sin)
挑戦してはいるんですけど・・・??? まず =IF(SUM((Sheet1!A2:A27<>"公休")*1)<ROW(A1:A26),"", INDEX(Sheet1!A2:I27,SMALL(IF(Sheet1!A2:A27<>"公休",ROW(A1:A26)),ROW(A1:A26)),COLUMN(A2:I27))) の内容が解らなくて・・・*1は何の為に?返す数字は、どうして一段変えてるの? COLUMNってなんですか?エクセルのヘルプで探したけど無くて・・・ 教えてください。
SUM((Sheet1!A2:A27<>"公休")*1) これは、シート1のA列の公休じゃない数を数えてるんですね。 <ROW(A1:A26),"", 公休じゃない数より行が大きく(データがふえたら)なったら、空白にしなさい。 といういみですね。 COLUMN は列です。 COLUMN(A2:I27) とすると、 {1,2,3,4,5,6,7,8,9} こんな配列が返るので私はよく使います。 どうでしょうか? 一度↓ここをご覧になるのがよろしいかと思います。 http://pc21.nikkeibp.co.jp/special/hr/ (SoulMan)
ご説明を有難うございました。何となく解る様な・・・ でも、公休を入力するのは F列の作業内容の所です。 なので、F列でSheet1!F2:F27<>"公休")*1 にしたのですが、エラーが表示されます。
Sheet2のA2からF30までを選択した状態で数式バーに =IF(SUM((Sheet1!F2:F30<>"公休")*1)<ROW(A1:A29),"", INDEX(Sheet1!A2:I30,SMALL(IF(Sheet1!F2:F30<>"公休",ROW(A1:A29)),ROW(A1:A29)),COLUMN(A1:I27))) と入力してCtrlキーとShiftキーを押しながらEnterキーで確定です。 どうでしょうか? (SoulMan)
いえエラー表示が出ます。 ROW(A1:A29)とありますが、セルを結合してるから??関係ないですよね・・・
結合? 元のデータにですか?転記先にですか? 元を結合しても「0」になるだけでしたけど、、転記先に結合セルがあると 入力自体が出来なかったですね。でも、以前は配列で表示出来ていたんでしょ? (SoulMan)
元のデータに計算式が入ってると駄目なのでしょうか? 結合を解いてもエラー表示 #N/A なんです。以前は配列で表示出来てました。
INDEXでみてますから関係ないと思います。 元のデータの番地と転記先の番地を教えてください。 (SoulMan)
元のデータは、計画表の入力が1〜5列で一段落として3段落ぐらいあるので、 別に =IF(COUNTIF($A$3:$F$26,$N3),VLOOKUP($N3,$A$3:$D$26,2,FALSE),IF(COUNTIF($G$5:$M$26,$N3),VLOOKUP($N3,$G$5:$M$26,2,FALSE),"")) と同じくSheet2に表示したい項目を元データのAJ〜AO列に纏めてます。 それをSheet2のA13〜D42,E13〜G42,H13〜N42(列は結合)と項目別に表示したいのです。
すみません。私は、あくまで例を提示しているのです。 >AJ〜AO列に纏めてます。 これは5列ですよね? >A13〜D42,E13〜G42,H13〜N42(列は結合)と項目別に表示したいのです。 これは14列ですよね?? 私が提示したサンプルはご覧になりましたか? http://ryusendo.no-ip.com/cgi-bin/upload/src/up0242.xls 応用できませんか? (SoulMan)
すみません。サンプルは見ました。
=IF(SUM(('計画表 (木)'!AM5:AM44<>"")*1)<ROW(A13:A42),"",INDEX('計画表 (木)'!AJ5:AO44,SMALL(IF('計画表 (木)'!AM5:AM44<>"",ROW(A13:A42),ROW(A13:A42)),COLUMN('計画表 (木)'!AJ5:AO44))))
で、配列にしましたが#N/Aとなりました。
配列という概念を少し誤解されている様です。 INDEXは実際の行や列番号ではなくて 配列の何番目か?なのです。 だから、元のデータがSheet1の Sheet1!AJ5:AO44 にあるとして 表示したいシートの5列×40段の範囲を選択した状態で 数式バーに =IF(SUM((Sheet1!AM5:AM44<>"")*1)<ROW(A1:A40),"", INDEX(Sheet1!AJ5:AO44,SMALL(IF(Sheet1!AM5:AM44<>"",ROW(A1:A40)),ROW(A1:A40)),COLUMN(A1:F40))) と入力してCtrl+Shift+Enterで確定します。 この式の意味は、Sheet1のAM5からAM44の間の空白ではない行に一致する データを抽出するものです。 どうでしょうか? http://ryusendo.no-ip.com/cgi-bin/upload/src/up0244.xls 簡単なサンプルを作ってみましたので、お確かめ下さい。 わちゃ、自分でいといて式を間違ってますね。( ̄□ ̄;)!!ごめんなさい。m(__)m =IF(SUM((Sheet1!AM5:AM44<>"")*1)<ROW(A1:A40),"", INDEX(Sheet1!AJ5:AO44,SMALL(IF(Sheet1!AM5:AM44<>"",ROW(A1:A40)),ROW(A1:A40)),COLUMN(A1:E40))) ↑ここ 誠に申し訳ありません。もう修正しませんが 40段 ROW(A1:A40) 5列 COLUMN(A1:E40) 40段 ROW(A1:A40) 6列 COLUMN(A1:F40))) ということです。。ではでは、 (SoulMan)
長々とすみませんでした。サンプル有難うございました。
解りやすくて理解できました。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.