[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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列」に入力されている文字列なのですが
cherry
(みやほりん)
最初の質問では >★シート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.