91370


シート１に

[code]

    key
    1
    2
    3
    2
    1
    
[/code]

とキーがかいてあって

シート２に

[code]

    key val
    1   abc
    2   xyz
    
[/code]

という感じでキーとうめたい文字列がかかれてるとして

シート１の２列目にシート２のキーに対応する文字列を入れたいです

LOOKUPメソッドを使えばできるみたいなんですが  
`=LOOKUP(A2,'シート2'!A:A, 'シート2'!B:B)`  
という計算式で２列目うめたところ

[code]

    key val
    1   abc
    2   xyz
    3   xyz
    2   xyz
    1   abc
    
[/code]

となぜか key=3 の存在しない値までうまってしまいます

存在しない値は空白のままにしたいのですが可能でしょうか？


CC BY-SA 4.0
2022-09-28T12:46:26.820
91358
2022-09-30T01:33:23.507
2022-09-28T12:52:32.467
question
google-spreadsheet
別シートを行検索して値を埋めたい


vlookupを使えばうまくいくと思います。※こちらの環境ではうまくいきました。

[code]

    =vlookup(A2, 'シート2'!A:B, 2, FALSE)
    
[/code]

コードの重複が気になりますが、見つからなかったときに特定の文字列(今回はNG)とする場合は以下のように書けばよいです。

[code]

    =if(isna(vlookup(A2, 'シート2'!A:B, 2, FALSE)), "NG", vlookup(A2, 'シート2'!A:B, 2, FALSE))
    
[/code]

* * *

以下追記です。  
`iferror`を使うともっと簡潔に書けました。

[code]

    =iferror(vlookup(A2, 'シート2'!A:B, 2, FALSE), "NG")
    
[/code]

`filter`を使った別解です。

[code]

    =iferror(index(filter('シート2'!B:B,'シート2'!A:A=A2),1), "NG")
    
[/code]

簡単に説明すると、'シート2'!A:Aの範囲でA2と同じ値を検索し、見つかった行のB列の値を返します。  
今回の質問では使う必要はありませんが、検索する列と値を返す列が連続していない場合にはこの方法が有効だと思います。


CC BY-SA 4.0
2022-09-29T08:15:23.007
91370
2022-09-30T01:33:23.507
2022-09-30T01:33:23.507
35558
35558
91358
answer