Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2016)
2つのシートから抽出する方法
投稿日時: 20/05/19 20:45:12
投稿者: fukukato

お世話になります。
またまた関数で質問です。
シート1にシート2のデータを返す、シート2に該当がなかったらシート3のデータを返す。2シートとも該当なかったら空白を返す。とゆう関数を考えています。
 
シート1(B列に返したい)
 A列  B列
 あ (20200501)
 い (20200503)
 う (20200503)
 え  (空白)
 お (20200501)
 
シート2          シート3
 A列  B列         A列    B列
 あ  20200501       い    20200503
 い             う    20200502
 う  20200503       お    20200501
 
シート2,3ともにシート1 A列と同じ項目があるわけではない、項目があってもB列が空白の場合もある、シート2,3両方にB列にデータがある場合もある(シート2優先)。
 
上記のようなデータがあり、シート1の()内のように返したいのですが、IF関数とVLOOKUP関数の組み合わせでできるかと思い考えていましたが
【値が真の場合】にシート2のVLOOK、【値が偽の場合】シート3のVLOOKと考えましたが論理式をどうしたらいいかわからなくなってしまいました。
IF・VLOOKで出るのでしょうか?それとも別の方法があるのでしょうか?
わかる方がいらっしゃいましたら、ご教授いただきたいです。
よろしくお願いします。 

回答
投稿日時: 20/05/19 21:47:48
投稿者: Mike

シート2 のA列2行目の「い」を削除しておく、
又は、
シート2 のB列2行目の空白に式 =NA() または文字列 #N/A を入力しておく、
の何れかを實行しておけば、
次式を入力したシート1 のセル B1 を下方にオートフィルすればOKかと。
=IFERROR(IFERROR(VLOOKUP(A1,シート2!A:B,2,FALSE),VLOOKUP(A1,シート3!A:B,2,FALSE)),"")

回答
投稿日時: 20/05/20 09:14:46
投稿者: んなっと

下の例の「か」のように両方が空欄の場合は空欄を返すんですね。
  
B列が数値の場合。
  
●シート2
  
  A     B
1 あ 20200501
2 い     
3 う 20200503
4 か     
  
●シート3
  
  A     B
1 い 20200503
2 う 20200502
3 お 20200501
4 か     
  
●シート1
  
  A     B
1 あ 20200501
2 い 20200503
3 う 20200503
4 え     
5 お 20200501
6 か     
  
B列がすべて数値なら
B1
=IFERROR(1*(VLOOKUP(A1,シート2!A:B,2,FALSE)&""),IFERROR(1*(VLOOKUP(A1,シート3!A:B,2,FALSE)&""),""))
下方向・↓
  
B列が実は文字列で、A0200105のようなデータの場合
B1
=IF(LEN(IFERROR(VLOOKUP(A1,シート2!A:B,2,FALSE),"")),VLOOKUP(A1,シート2!A:B,2,FALSE),IFERROR(VLOOKUP(A1,シート3!A:B,2,FALSE),""))&""
下方向・↓

投稿日時: 20/05/20 19:21:20
投稿者: fukukato

Mike様
 
回答ありがとうございます!
IFERRORでできるんですね。IFERRORで出来ないか調べたんですが、こちらも??となってました。
大変勉強になりました。
データ量が3000件以上のデータでそのまま加工せずにしたかったので別の方の関数することにしましたが、今回教えていただいた事を別の機会に生かしたいと思います。

投稿日時: 20/05/20 19:26:57
投稿者: fukukato

んなっと様
 
回答ありがとうございます。
B列数値でYYYYMMDDの日付しかないデータなので、1つ目の関数を使用しデータ抜くことが出来ました!!
大変助かりました!!
1*やLENなど知らなかったことが出てきたので、調べて理解しようと思います。
ありがとうございました。

投稿日時: 20/05/20 19:27:59
投稿者: fukukato

んなっと様
  
回答ありがとうございます。
B列数値でYYYYMMDDの日付しかないデータなので、1つ目の関数を使用しデータ抜くことが出来ました!!
大変助かりました!!
1*やLENなど知らなかったことが出てきたので、調べて理解しようと思います。
ありがとうございました。