[[20201028110838]] 『複雑な式が解読できない』(ゆうか) ページの最後に飛ぶ

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

 

『複雑な式が解読できない』(ゆうか)

=IF($B$2="ALL",IFERROR(VLOOKUP(TEXT($A176,"####"),'[Sales.xlsx]tanaka '!$A$4:$Z$65536,C$2,0),NA()),IFERROR(VLOOKUP($A176&$B$2,'[Sales.xlsx]yoshida'!$A$4:$Z$65536,C$2,0),NA()))

↑こういう式があるんですが、何をやっているんでしょうか。

SalesファイルのTanakaシートとYoshidaシートを見に行っているということと、IfとIferrorとVlookupの意味は知っているんですが、式が複雑すぎてわけわかりません。

あと、TEXT($A176,"####")ってどういう意味ですか?

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


 =IF($B$2="ALL",
     IFERROR(VLOOKUP(TEXT($A176,"####"),'[Sales.xlsx]tanaka '!$A$4:$Z$65536,C$2,0),
             NA()),
     IFERROR(VLOOKUP($A176&$B$2,'[Sales.xlsx]yoshida'!$A$4:$Z$65536,C$2,0),
             NA())
  )
 とすると改善しますか?
 TEXT($A176,"####")はたぶん、数字の頭の0を取ることを意図しているのでは?
(γ) 2020/10/28(水) 11:24

 >TEXT($A176,"####")ってどういう意味ですか?
 A176は具体的にどんな値なんですか?

 0123 という文字列を 123 という文字列にする
「0」なら空白「""」にするということなら

 TEXT($A176,"#") でも同じことだと思いますけど。

 それと
 >$A$4:$Z$65536
 2010(xlsx)なのに「65536」というのもよくわかりませんね。

 以上
(笑) 2020/10/28(水) 11:46

γさん、ありがとうございます。まだ不明点があります。

=IF($B$2="ALL",

   A  IFERROR(VLOOKUP(TEXT($A176,"####"),'[Sales.xlsx]tanaka '!$A$4:$Z$65536,C$2,0),
             NA()),
   B IFERROR(VLOOKUP($A176&$B$2,'[Sales.xlsx]yoshida'!$A$4:$Z$65536,C$2,0),
             NA())
  )

B2=ALLの場合=A
そうではない場合=B

 Aの中味は、Vlookupで、TEXT($A176,"####")がtanakaシートで見つからなかったらNAと表示させる
 Bの中味は、Vlookupで、$A176&$B$2がyoshidaシートで見つからなかったらNAと表示させる

上記の理解で良いのでしょうか?

あと、NA()というのがありますが、NAの後の()はどういう意味ですか?

(ゆうか) 2020/10/28(水) 11:53


NA関数のヘルプを読んで下さい。
関数なのでカッコをつけます。
ワークシート上でどこかのセルに =NA とした場合と、=NA() とした場合を比較してください。

ちなみに、式を上のように改行でわけてもエラーにならないので、
分解して理解するのも役立ちます。

(γ) 2020/10/28(水) 12:00


(r)さん、NA()の関数の意味がわかりました。関数だったんですね。
ありがとうございました。
(ゆうか) 2020/10/28(水) 12:35

(笑)さん

> A176は具体的にどんな値なんですか?
20193、という数字が入っています。
(ゆうか) 2020/10/28(水) 12:37


 >20193、という数字が入っています。
 その「20193」は数値なのか文字列なのか、どっち?

 わからなけば、どこか空いたセルに =TYPE(A176) と入れてみてください。 
「1」なら数値、「2」なら文字列です。

 >TEXT($A176,"####")
 実際の式は TEXT($A176,"#,###") ということはないですよね?
                         ~~~~~
 ところで提示の式は、エラーでなければ正しい値を返してるんですか?
 tanakaシートの方ですけど。

 以上
(笑) 2020/10/28(水) 13:18

 不可解な数式だなぁ。

 IFERROR関数を使いながら、エラーだったらNA()のエラーを出すってジョークに近くない? 

(半平太) 2020/10/28(水) 13:39


えーと、NA()ってグラフなどを書くときは
特別な振る舞いをしませんか?
そんなことも背景にあるかもしれませんね。

(γ) 2020/10/28(水) 14:51


 =IFERROR(VLOOKUP(………),NA())
 でも
 =VLOOKUP(………)
 だけでも
 検索値が見つからなかったら #N/A になるってことでは?

 #N/A 以外のエラーでも、すべて #N/A に統一したいとかいう意図があるなら別ですけどね。

 以上
(笑) 2020/10/28(水) 15:03

おっしゃる通りですね。
値そのものがエラー値(いろいろ種類あり)ということもあるので、
その時にもNA()に統一できるということしかなかったですね。
どのエラーでもグラフでスキップすることは同じですね。

もともとの作者に尋ねないと意図は不明ですかね。

(γ) 2020/10/28(水) 15:31


 統一したかったとして
 IFERROR(IF($B$2="ALL",VLOOKUP(),VLOOKUP()),NA())
 でもいい気がしますけど・・・
(稲葉) 2020/10/28(水) 16:03

なるほどそうですね。ありがとうございます(質問者の代理も兼ねて)。

質問者さんへ。
>式が複雑すぎてわけわかりません。
これは先述の改行挿入、構造化方式で少し改善すると思います。

ちなみに、こんな議論もありました。
『計算式の可読性を上げたい』
[[20200917094156]]
ちょっと難しいかも知れません。

(γ) 2020/10/28(水) 20:28


コメント返信:

[ 一覧(最新更新順) ]


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