[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『INDEX MATCH関数』(コニ―)
INDEXとMATCH関数で、日付を検索しています。
該当データがない場合、関数の頭にISERROR を入れて”なし”と表示しているので、
該当データがない時は”なし”と出ますが、
片方は一致して、片方が一致しない場合(←日付が空白)、
結果欄に1月0日 と表示になってしまいます。
日付の表示形式を検索側は検索先に合わせてm"月"d"日"にしているからなのかも
しれませんが、回避する方法はないでしょうか。
=IF(P2="","",IF(ISERROR(INDEX(テスト!$D$3:$AU$110,MATCH($M2,テスト!$D$3:$D$110,0),MATCH($P2,テスト!D$3:AU$3,0))),"なし",INDEX(テスト!$D$3:$AU$110,MATCH($M2,テスト!$D$3:$D$110,0),MATCH($P2,テスト!D$3:AU$3,0))))
< 使用 Excel:Excel2010、使用 OS:Windows7 >
1月0日が表示されなければいいんだったら 表示形式を m"月"d"日";; (← 「;;」をつける) > 該当データがない場合、関数の頭にISERROR を入れて”なし”と表示しているので
2010だったらISERRORじゃなく、IFERROR を使った方がいいよ。 > INDEX(テスト!$D$3:$AU$110
どうでもいいっちゃ、どうでもいいけど D列と3行目を範囲に含める必要があるの? (名無しのおっさん) 2014/05/20(火) 11:06
わかりづらくて申し訳ございません。
表から、商品名と日付が両方一致した場合、表の日付を表示したいのですが、
商品名が一致して、日付が一致しない場合(検索先の日付が空白)答えが1月0日になります。
商品名がない場合や、商品名はあるけど日付がないものは”なし”表示になります。
表示形式を m"月"d"日";;にしますと確かに空白になりますが出来れば”なし”と表示したいのです。
(コニ―) 2014/05/20(火) 11:49
> 表示形式を m"月"d"日";;にしますと確かに空白になりますが > 出来れば”なし”と表示したいのです。
表示だけでいいんだったら 表示形式を m"月"d"日";;"なし"
エラーになる場合の「なし」と整合性を持たせるなら 数式の "なし" → 0 に変更(表示形式じゃなく数式の方) (名無しのおっさん) 2014/05/20(火) 12:00 追記 12:15
(コニ―) 2014/05/20(火) 13:07
> 表示形式で"なし"にしたものと > 計算式で"なし"が求められたものが別になってしまうので
数式の "なし" を 0 にすれば同じになるでしょ?
> 計算式で解決したいです。
範囲とか絶対参照のつけ方とかよくわからんとこがあるけど
……,IF(ISERROR(1/INDEX(Sheet2!$D$3:$AU$110,…… ~~~~~ Sheet2 → テスト (名無しのおっさん) 2014/05/20(火) 13:19 追記 13:23
……,IF(ISERROR(1/INDEX(Sheet2!$D$3:$AU$110,…… ~~~~~ しかし 1/を追加したら1月0日は なし表示になりましたが、 今まで算出されていた部分が1月0日になりました。
説明がうまくできなくて申し訳ございません。
(コニ―) 2014/05/20(火) 14:51
> しかし 1/を追加したら1月0日は なし表示になりましたが、 > 今まで算出されていた部分が1月0日になりました。
1/ を追加するのは ISERROR のとこだけでっせ? こっち(↓)はつけたらあきまへんw
……,"なし",INDEX(テスト!$D$3:$AU$110,…… ~~~~ どうでもいいっちゃ、どうでもいいけど、 個人的には 1/ より 0/ の方がいいような気がしてきたw (名無しのおっさん) 2014/05/20(火) 15:35
>片方は一致して、片方が一致しない場合(←日付が空白)、 結果欄に1月0日 と表示になってしまいます。 日付の表示形式を検索側は検索先に合わせてm"月"d"日"にしているからなのかも しれませんが、回避する方法はないでしょうか。
> =IF(P2="","",IF(ISERROR(INDEX(テスト!$D$3:$AU$110,MATCH($M2,テスト!$D$3:$D$110,0),MATCH($P2,テスト!D$3:AU$3,0))),"なし",INDEX(テスト!$D$3:$AU$110,MATCH($M2,テスト!$D$3:$D$110,0),MATCH($P2,テスト!D$3:AU$3,0))))
IFを解析。
・P2セルが空白なら 空白 ・INDEX(…,MATCH(M2,…),MATCH(P2,…))がエラーなら「なし」 ・出なければ INDEX(…)を返す。(M2×P2を基にテストシートから) ・けど、日付空白なら「1月0日」になる。 →1月0日はマトリックスで検索して返った結果が「0」だよね?
まだ片方ってのが全然わからんけど。
M2に「日付」 P2に「商品名」が入力されていて テストシートのD3:AU110の範囲を見る。
ってこと?
なら M2が空白(文字列)なので「0」になるんでないの?
=IF(OR(P2="",M2=""),"",・・・) に変更
※めちゃ憶測 (GobGob) 2014/05/20(火) 15:47
0/をどこにいれるのかわかりません(TT)
(GobGob)様
IFの解析は書かれている通りです。
P2が空白の場合は必ずM2も空白なのでP2しかIF関数を組みませんでした。
1月0日表示になるのは INDEX(…)範囲内で、空白だった場合です。
しかし エラーなら「なし」としているので 何故なのかなと。
表示形式をm"月"d"日"にしているのも影響しているのでしょうか。
(コニ―) 2014/05/20(火) 17:48
> 0/をどこにいれるのかわかりません(TT)
=IF(P2="","",IF(ISERROR(0/INDEX(テスト!$D$3:$AU$110,…… ~~~~~ ↑ ここだけ、この1ヶ所だけ ……,"なし",INDEX(テスト!$D$3:$AU$110,…… ~~~~~ ↑ ここは何も追加したらあきまへんw (名無しのおっさん) 2014/05/20(火) 18:26
0/を追加する事で何故解決したのですか?
(コニ―) 2014/05/21(水) 08:42
> 0/を追加する事で何故解決したのですか?
何も入力してない空白セルを参照したらエラーになると思ってるようだけど、 まずそこからして間違い。
例えばB1セルに =A1 の式を入れる。 A1セルが空白(未入力)だったら、B1は「0」になる(エラーにはなりまへんw) それはINDEX関数でも同じこと。
0 が表示されてるB1の表示形式を日付にしたら 1900/1/0 などとなる。 表示形式が m"月"d"日" だったら 1月0日になる。 つまり「1月0日」が表示されるということは「0」が返ってるってこと。 ここをしっかり押さえようw
質問のINDEX関数が返す値は (1)ちゃんとした日付(シリアル値) (2)0 (3)#N/Aエラー(検索値が見つからない場合) のどれか。
だから 0 が返った場合もエラーになるようにすればいい。
A1に 0 を入力して、B1に =0/A1 という式を入れてみればわかるけど #DIV/0!エラーになる。
0/INDEX でも同じ。
0/INDEX で、INDEX関数が返す値が (1)ちゃんとした日付なら「0」(エラーにはなりまへんw) (2)0なら #DIV/0!エラー (3)#N/Aなら #N/Aエラー
ISERROR関数でエラーだったら「なし」となるようにしてあるんだから 空白の場合(0が返った場合) 検索値が見つからなかった場合(#N/Aが返った場合) この2つは「なし」と表示されるってこと。 (名無しのおっさん) 2014/05/21(水) 15:02
分かりやすい解説ありがとうございました。
とても勉強になりました。
(サリー) 2014/05/22(木) 08:55
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.