• ベストアンサー

EXCEL関数

   A      B        C     D    E 1 田中(東京) 合格   8/1      鈴木 2 山田(大阪) 不合格  8/1      田中  3 鈴木(京都) 合格   8/3      山田 4 山田(大阪) 合格   8/4      伊藤 たとえばA1からE4にこのような入力がされているとします。(D列はなにも入力されていません。) 山田さんが合格のときF列に日付を表示し、そうでなければ空白を表示するにはどうすればよろしいのでしょうか? この場合F4に「8/4」と入るはずなのですが、 =IF(A4=E3 & "*",IF(B4="合格",C4,""),"") という式では空白になってしまうのです。 どうすればよろしいでしょうか。式には"山田"と入力せず、E3と示したいです。 分かる方教えてください。 EXCEL2000を使っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • Fat01ton
  • ベストアンサー率46% (122/264)
回答No.1

ご相談のことをしたいだけなら IF(B4="合格",C4,"")の式だけでよいような気がします。 =IF(A4=E3 & "*",,"") の条件式は何をなさりたいのでしょうか? 申し訳ありませんが補足願います。

noname#4108
質問者

補足

質問がわかりづらくてすいません。 E3 & "*" はA4に「山田」と入っている条件を探すということで、アスタリスクを使い"*山田*" とおなじ意味になると思うのですが・・・(自身がありません。) A4=E3では都道府県名が入力されていて、検索条件に当てはまらないので、"*"をつけました。

その他の回答 (6)

回答No.7

まずは、やりたいことを確認させてください。 A1:C4の表があって、E列に名前を入れると、F列にはA1:C4の表の中でE列に入れた人と同じ人の合格日が表示されるようにし、合格でなかったら表示しないというような関数をいれるには? ということでしょうか?(外していたらごめんなさい。) それであれば、 (1)E1のセルに、 =IF(VLOOKUP(E1 & "*",$A$1:$C$4,2,FALSE)="合格",VLOOKUP(E1 & "*",$A$1:$C$4,3,FALSE),"") を入力し、オートフィルで、E2~E4までコピー (2)B列(B1からB4どこでもいいです。)をクリックして、昇順で並べ替えのボタンをクリック で合格した日付が表示されます。(F1:F4のセルの書式設定で表示形式を日付にしてください。) 但し伊藤さんはエラー表示となりますが、IF関数と、IsError関数で回避できます。(長くなるので割愛させていただきます。) ご参考になれば幸いです。

noname#4108
質問者

お礼

ご回答ありがとうございます。 並べ替えボタンというのが何のことかわからなかったので(書式の並べ替えのことではないですよね?)、(1)のみしか入力していないので、できるかどうかまだわからないのですが、下の回答をいただいた方とは違い、VLOOKUP関数を使うという方法もあるのですね。

  • TTak
  • ベストアンサー率52% (206/389)
回答No.6

"*"はもしかして、ワイルドカードということでしょうか。もし違っていれば回答ではありませんので、参考までに。 ”E3の文字をA4が含んでいる”かつ”A4が「合格」である”である場合C4の日付を返すということで考えてみました。ちょっと長いので、もっとコンパクトな回答もあるかもしれません。FIND関数を使いました。 =IF(AND(NOT(ISERROR(FIND(E3,A4,1))),B4="合格")=TRUE,C4,"")

noname#4108
質問者

お礼

ご回答ありがとうございます。 そうです。ワイルドカードを使いたかったのです。 使わなくてもよい方法があるのですね。 ISERROR関数は今まで使用したこともなく、このような式は思いつかなかったです。とても参考になりました。 ありがとうございます。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.5

こんにちは。maruru01です。 別の方法を。 =IF(ISERROR(FIND(E3,A4)),"",IF(B4="合格",C4,"")) これなら、A列の名前の前後に余分な文字があってもOKになります。

noname#4108
質問者

お礼

ご回答ありがとうございます。 この式でみごとできました! 下の方とは違い、ISERROR関数を使用してもできるのですね。 勉強になります。ワイルドカードを使わなくてもできるなんて。 ありがとうございました。

  • tomo-yuki
  • ベストアンサー率39% (11/28)
回答No.4

=IF(AND(LEFT(A1,LEN($E$3))=$E$3,B1="合格"),C1,"") F1のセルにというような式を入力して、F列にコピーしてやれば良いかと思います。 $E$3のように$マークをつけると、コピーしても行や列の参照が変更されません。

noname#4108
質問者

お礼

ご回答ありがとうございます。この式でできました。 下の方も同様にLEN関数、LEFT関数を使用すればいいのですね(^。^) 勉強になりました。

  • Fat01ton
  • ベストアンサー率46% (122/264)
回答No.3

#1のものです。 >E3 & "*" はA4に「山田」と入っている条件を探す A列はかならず、名称+県名 E列はかならず、名称となっているのなら こんな式ではどうでしょうか? =IF(LEFT(A4,LEN(E3))=E3,IF(B4="合格",C4,""),"") (1)E3の入力されている文字数をLEN関数で抽出します (2)A4をLEFT関数で左からE3の文字数分だけ抽出します (3)A4の抽出したものとE3が同じかどうか比較します その後は xxx-oyak さんの条件でOKかと思います あとはD列の表示形式を日付にしてやれば この条件式で 8/4と表示されると思います。 差し出がましいかも知れませんが A列に名称、B列に県名にしてしまったほうが今後楽になるかと思います。 また、個人的に疑問なのが4行目はE3と比較しましたが 1~3行目はどうなるのかなとは思いました。 参考になれば幸いです。

noname#4108
質問者

お礼

ご回答ありがとうございます。 この式でみごとできました!ありがとうございます。 LEFT関数、LEN関数・・・ 今まで知りませんでした。 複雑な式にするには多くの関数を知っておくべきですね(+_+)

  • moccos
  • ベストアンサー率43% (61/140)
回答No.2

今出先からなのですが(エクセルが入ってない)・・・ 単純にANDの記入の仕方が違うみたいなので・・・・ =IF(A4=E3 & "*",IF(B4="合格",C4,""),"") =IF(AND(A4=E3,""),IF(B4="合格",C4,""),"") で良いのでは?

noname#4108
質問者

お礼

わざわざ外出中にご回答ありがとうございます。 なるほど!&ではなくAND関数を使うわけですね! ただA4とE3が完全に一致していないので、エラーになりました。ほかの方の回答も参考に考えてみます。

関連するQ&A

専門家に質問してみよう