[[20120405195156]] 『VLOOKUP』(cherry)  ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VLOOKUP』(cherry)

シート1のA列に入っている文字列と同じ文字列を、シート2から探し出し、その行の
G列に入っている数字を、シート1のB列に反映させる式を教えてください。

★シート1のA列に入っている社員番号を、シート2のA列から検索して、
そのシート2のB列に入っている入社日をシート1のB列に反映させたいのですが


 題名に書いてある関数をそのまま使えばいいと思いますが…。
 =VLOOKUP(A2,Sheet2!A:B,2,FALSE)

 (se_9)

ありがとうございます。

実際に反映したいのは、シート2の「B列」に入力されている文字列なのですが


たびたびすみません。
つまり、シート1のA列に入力されている社員番号と同じ番号を、シート2のA列から探し出して、
そのシート2のB列に入力されている文字列(日付)を「シート1のA列」に反映させたいのですが・・・

cherry


↑は、se_9さんの式を試してみた結果のコメントなんでしょうか。
>★シート1のA列に入っている社員番号を、シート2のA列から検索して、
>そのシート2のB列に入っている入社日をシート1のB列に反映させたいのですが
シート2をSheet2としていますが、B列に式を入力したら、ほぼそのままだ使える式
と思いますけど。
 
>「シート1のA列」に反映させたいのですが
これは関数では無理ですけどね。

(みやほりん)


 最初の質問では
 >★シート1のA列に入っている社員番号を、シート2のA列から検索して、
 >そのシート2のB列に入っている入社日をシート1のB列に反映させたい

 と書かれていたので
 =VLOOKUP(A2,Sheet2!A:B,2,FALSE)
 と回答したのですが、シート1のA列に元々入力されている社員番号に入社日を
 上書きするという形にしたいということですか?

 <Sheet1>
 	A	B
 1  社員番号	
 2	2	
 3	3	
 4	1	
 5	4	
 6	5	

 <Sheet2>
        A     B
 1  社員番号  入社日
 2      1    1998/4/1
 3      2    2002/4/1
 4      3    1980/4/1
 5      4    2010/4/1
 6      5    1995/4/1

 <Sheet1>
 	A	B
 1 社員番号	
 2 2002/4/1	
 3 1980/4/1	
 4 1998/4/1	
 5 2010/4/1	
 6 1995/4/1	

 みたいな。それだとみやほりんさんがおっしゃっている通り関数ではできません。
 上記例のようにしたいということなら

 Sub 入社日()

     Dim lngRow As Long, i As Long, SNum As Long
     Dim MyRange As Range

     With Sheets("Sheet1")
         lngRow = .Cells(Rows.Count, 1).End(xlUp).Row
         For i = 2 To lngRow
            SNum = .Cells(i, 1)
            Set MyRange = Sheets("Sheet2").Columns("A").Find(what:=SNum)
            .Cells(i, 1) = Format(MyRange.Offset(0, 1), "yyyy/m/d")
         Next
     End With

 End Sub

 *追記*

 上記コードだと該当する社員番号がない時にエラーメッセージが出てしまうので

 Sub 入社日()

     Dim lngRow As Long, i As Long, SNum As Long
     Dim MyRange As Range

     With Sheets("Sheet1")
         lngRow = .Cells(Rows.Count, 1).End(xlUp).Row
         For i = 2 To lngRow
            SNum = .Cells(i, 1)
            Set MyRange = Sheets("Sheet2").Columns("A").Find(what:=SNum)
            If MyRange Is Nothing Then
               .Cells(i, 1) = "該当する社員番号がありません"
            Else
               .Cells(i, 1) = Format(MyRange.Offset(0, 1), "yyyy/m/d")
            End If
         Next
     End With

 End Sub

 (se_9)

ありがとうございます。

 (se_9)さん、みやりほんさん、ありがとうございます。

上書きではなく、ただセルを参照して同じものを反映させたいのです。

<Sheet1>

 	A	B
 1  社員番号	
 2	2	
 3	3	
 4	1	
 5	4	
 6	5	

 <Sheet2>
        A     B
 1  社員番号  入社日
 2      1    1998/4/1
 3      2    2002/4/1
 4      3    1980/4/1
 5      4    2010/4/1
 6      5    1995/4/1

 これだと、入社日がシート1には入っていないので、シート2のB列に入社日を
入れると、自動的にシート1のB列にも同じ社員番号のところにその人の入社日が入るように
したいのです。

説明が下手ですみません。。。

よろしくお願いいたします。


 まずは、ご説明通りにご自身で新規ブックにデータを作成し
 Sheet1のB2セルに、最初にse_9さんが書いて下さっている式を入れて
 下にフィルドラッグ(B2セルをコピーして、B3:B6セルに貼り付け)してみて下さい。

 で、どの様に希望と違うのかを書いて貰うと良いのかも知れません。

 なんだか、試しもせずに文句だけ言われている様な??

 (HANA)

試してみて「変な数字が出る」ということならば、
セルの書式設定の表示形式を適切な日付表示形式に変更してみてください。
・・・ということじゃなかろうか。
(みやほりん)

 そうか、引っ張ってくるデータが日付なので
 表示形式の問題かもしれないですね。

 「試しもせずに」なんて疑って ごめんなさい。

 (HANA)

というか、試してはいるんでしょうけど、

実際にはこういうデータです、
こういう式をここに入力しました、
こういう結果になりました、

のように状況報告がないので、どこで詰まっているのか
判断ができないんですよ。

「したい、したい」しか書いてないので。

次のような結果報告がほしいね。

「Sheet1!B2で社員番号2の人の入社年月日を検索したくて
=VLOOKUP(A2,Sheet2!A:B,2,FALSE)を入力しました。
しかし、2002/4/1ではなくて、37347という数字が出てしまいます」
とか、ね。
(みやほりん)


 >自動的にシート1のB列にも同じ社員番号のところにその人の入社日が入るようにしたいのです

 「シート1のA列」と書かれたからマクロを提示してみたのですが、やっぱりB列なんですね。
 これじゃあ混乱してしまいますよ。

 みやほりんさんもおっしゃていますが、試してみてうまくいかないのならどこがどううまく
 いかないのか書いてください。もし表示形式のことだったら書かなかった私も悪いのですが。

 (se_9)

みなさま

すみません!!!
ご回答、どうもありがとうございます。

最初に、(se_9)さんのアドバイス通りに式を入れたのですが、「N/A」と出てきてしまいました。

で、自分でも式のどこが間違っていてエラーが出るかわからず、、、、

ちょっと整理します。

申し訳ありません


 =VLOOKUP(A2,Sheet2!A:B,2,FALSE)
 だと該当する社員番号がない時に #N/A が出ますが、社員番号がある場合でも #N/A が
 出てしまうのでしょうか?

 もし社員番号がある場合は出ないけど、ない時に出るというのなら
 バージョン2003以前
 =IF(ISNA(VLOOKUP(A2,Sheet2!A:B,2,FALSE)),"",VLOOKUP(A2,Sheet2!A:B,2,FALSE))

 バージョン2007以上
 =IFERROR(VLOOKUP(A2,Sheet2!A:B,2,FALSE),"")

 でどうでしょうか?

 (se_9)

 シート1とシート2の社員番号が同じようで同じでないのでは?
 どちらかが文字列になっているとか・・??
 シート1とシート2の同じ社員番号が"="になるかひとつ確認されてみては?
 最初に同じ文字列と書いてありましたね(^_^;)
 でも本当に同じかどうかは、確認すると良いと思います。
 私も良く間違えましたので・・・
 (nabeyan)


 本当は番号が有るのに #N/A に成っている場合

 そのセルの番号をそれぞれのシートで TYPE 関数で調べてみて下さい。

 結果が違ったら同じに成るように修正が必要です。

 TYPE関数の戻り値が同じ場合は、試しに片方のセルをコピーして
 もう片方のセルへ貼り付けてみて下さい。

 社員番号がアルファベット等文字を含まない数字だけから出来ている場合
 片方は数字で片方は数値(見た目は同じ)でマッチングが上手く行かない場合も有りますし
 システム等から出されたデータの場合、気づきにくいですが後にスペースなどがあり
 マッチングが上手く行かない場合も有ります。

 #N/Aエラーが出る原因は色々ありますので
 どうなっているのか、そちらの状況を詳しく説明して貰うのが良いと思います。

 何がやりたいかは、一番最初の説明で上手く伝わっていると思いますので。

 (HANA)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.