[[20220205225323]] 『XLOOKUP関数について Excel365』(らび) ページの最後に飛ぶ

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

 

『XLOOKUP関数について Excel365』(らび)

  A列   B列  C列  D列  E列  F列
1  評価表
2     点数  評価   点数 評価     
3 学生1   100 A       0   F
4 学生2 59 F 60 D
5 学生3 79 C 70 C
6 学生4 70 C 80 B
7 学生5 空欄  A       90   A

セルC3には以下の式が入っています。

          =XLOOKUP(B3,$E$3:$E$7,$F$3:$F$7,"",-1)
セルB7が空欄なので、評価欄も空欄にしたいのですが「A」が表示されてしまいます。「""」を入力した引数4つ目の「見つからない場合」は優先されないようです。空欄にするにはどうしたらよいか、お知恵を拝借できないでしょうか。

VLOOKUPに代わる関数という事で使いこなしたいのですが、
初歩的なところで躓いてしまいました。

< 使用 Excel:Office365、使用 OS:Windows10 >


 >初歩的なところで躓いてしまいました。

 XLOOKUPの挙動はそんなにクリアじゃないです。(常識的なデータが対象なら便利ではあります)
 これから、徐々に解明されていくでしょうけども。

 C3セル =IF(B3="","",XLOOKUP(B3,$E$3:$E$7,$F$3:$F$7,"",-1))
 下にコピーする。

 または、スピルさせるべく↓ (式のコピーは不要)
 C3セル =IF(B3:B7="","",XLOOKUP(B3:B7,E3:E7,F3:F7,"",-1))

(半平太) 2022/02/05(土) 23:29


レイアウトが崩れていたのにも関わらず、早々のお返事ありがとうございます。
VLOOKUP同様、IFでの処理が必要となりますか。
「見つからない場合」という4つ目の引数は空欄処理には有効ではないということでしょうか・・。
まだまだ解釈が難しいですが、便利な関数である事は実感しています。
有難うございました。

(らび) 2022/02/06(日) 01:15


 F8を=""、範囲を1行追加して
=XLOOKUP(B3:B7,E3:E8,F3:F8,"",-1)
で""が返りました
(どん) 2022/02/06(日) 07:37

 >「見つからない場合」という4つ目の引数は空欄処理には有効ではないということでしょうか・・。

 いや、「空白が見つかった」ので空白処理に行かないんです。

 従来のLookupの場合、空白は0として検索に行くので「F」が返る。

 しかし、XLookupでは、空白は数値より大きいものとして処理される(多分)。
 なので、第5引数(-1)が「見つからない場合は、次の小さなアイテムを返さす指定」なので90がヒットして「A」が返る。

 従って、第4引数を返させたければ、検索値が空白の場合、「0未満」に変換する様な工夫が必要となる。
  例:=XLOOKUP(IF(B3="",-1,B3),$E$3:$E$7,$F$3:$F$7,"",-1)

 ただし、空白の場合は空白にしたいのだから、エクセルにXLOOKUPの計算までやらせるのは無駄ですよね。
 初めにIFを使って空白を返させるのがエクセル君には優しい数式じゃないですか?

(半平太) 2022/02/06(日) 08:30


 >7 学生5 空欄  A
 何で空欄なのに評価するんですかね。
 =IF(B7="","","")だけでいいのでは。

(*) 2022/02/06(日) 10:36


半平太様

引き続き有難うございます。第4引数にこだわっていたので助かります。
例:=XLOOKUP(IF(B3="",-1,B3),$E$3:$E$7,$F$3:$F$7,"",-1)の解釈ですが、

空白≠「見つからない場合」ではなく、VLOKKUPでは空白=0
XLOOKUPでは空白=∞(? 良い記号が思いつきません)となるので、上限が指定できず
下限である「0未満」を空白と等しくさせる という事であっていますでしょうか。

F8に「=""」を充てる方法は、上限を指定する事とイコールとも思え
なるほど!と納得したのですが、やはりIFでの空白処理の方が良いのでしょうか。

 

(らび) 2022/02/06(日) 11:19


どん様
F8に「=""」を充てる方法はどん様の書き込みでした。
有難うございます。

はじめての投稿で慣れておらず申し訳ございません。
(らび) 2022/02/06(日) 11:35


 >下限である「0未満」を空白と等しくさせる という事であっていますでしょうか。
 0未満とするのが「見つからない場合」の典型的なケースを造るので、そう言う意味になります。

 >F8に「=""」を充てる方法は、上限を指定する事とイコールとも思え
 >なるほど!と納得したのですが、やはりIFでの空白処理の方が良いのでしょうか。
 好みの問題と思いますが、E8の空白(未入力)が、0から90の延長として昇順リストを構成していると認識できますか?
 少なくとも、従来の関数では、空白はそんな評価がされなかった並び順概念です。

 「昔の関数も併用する」私のような人間には怖くて積極的に利用しようとは思わないリストですね。
 ※XLOOKUPだけしか使わないと決めこんだ人には抵抗ないかも知れません。

 まぁ、今後いろいろなケースで「ドキッ」とするシーンが出てくると思うので、
 徐々に習得して行くしかないと思っています。
 (エラー値が含まれたりしているとまた趣が違ってきます)

 なお、第4引数は""とかの文字列に決まった訳じゃなく、関数も入れられるのでケースにより利用価値が高まります。

(半平太) 2022/02/06(日) 11:53


コメント返信:

[ 一覧(最新更新順) ]


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