• ベストアンサー

EXCEL2002で,IF thenの関数式を使い、値が「空白」なら、もう一方の関数式を代わりに代入する方法

 EXCEL2002で,IF thenの関数式を使い、値が「空白」なら、もう一方の関数式を代わりに代入する方法を教えて下さい! (1) 通常なら、AA5というセルに、 =RSS|'1332.T'!現在値  という関数式が入っているとします。 (2) ここで、元々上記式が入るAA5セルの値が「空白」(⇒決して「0」ではない。ことに留意して下さい。)であるなら、もうひとつ用意した  =RSS|'1332.T'!○○○ を文字通り、選択的に用い、IF thenの関数式を使って、その値を表示させる。  どちらの式も命令文の一文として、勿論、AA5に入っています。  即ち、間違っていると思うのですが、数式のイメージとしては、  IF =RSS|'1332.T'!現在値=「 」 then =RSS|'1332.T'!○○○ (3)こうしたIF thenの関数式の”正しい式”を教えて頂けないでしょうか?   何卒、宜しく御願いします。

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

  • ベストアンサー
回答No.3

(1)>Range("AA5").Formula⇒Range("AA5:AA229").Formulaに変更すれば あくまでAA5が空白でいいという前提ならOKですが たぶんAA6に対しても、となってくるのでは?そうなるとFor~Next使わないとたぶん無理 (2)私もRSSは知らなかったのですが、テストしてみたら何となく外部参照しているくらいしか分からなかったんで… >返される値が、空白 どゆこと?関数が入力されているわけではないのですか? それともマクロで数式=.Valueとなっているのでしょうか? >前の条件式、RSS|'1332.T'!現在値 と比較してみると、唯一の違い は、「○○○」の部分でしかないので、  「○○○」以前の数式「RSS|'1332.T'!」を上手に「置換」を使って、「入力式」を普遍化できないでしょうか? 言っていることがいまいち…

TRADKING
質問者

お礼

 有難うございます。  現在では、随分と難しいことを、取り越し苦労で考え過ぎていたように思い、反省しています。  様々な形で試行作業を繰り返したところ、ANo.4さんの「シンプルな式こそ全てに勝る」という考えに感化され、以後、改めようと思います。  これまで、有難うございました。

その他の回答 (3)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

このアドインの正体はこれですかね http://kabu.muimi.com/k/rakuten_rss/1/ セルAB5に =RSS|'1332.T'!現在値 セルAC5に =RSS|'1332.T'!○○○ を表示させるようにしておいて、AA5には =IF(AB5="",AC5,AB5) とするのが順当ではないでしょうか? =IF(RSS|'1332.T'!現在値="",RSS|'1332.T'!○○○,RSS|'1332.T'!現在値) とIF関数の中に直接アドインを記述して動作するなら、こちらの方がシンプルだとは思いますが…

TRADKING
質問者

お礼

zap35様には、困ったときに、こうして、毎回、タイミング良く窮状を助けて下さり、本当に感謝の言葉に耐えません。  改めて、有難うございます。  仰るとおり、ご指摘の通りのアドインです。  関数式をセルに代入した結果、「現在値」が表示されますので、現在のところは、「問題がない」のですが、  ★セルの値表示が「空白」になる状態というものを、自動的には「作り出せない」ものですから、それが可能になる「月曜日」を待って再び御報告させて下さい。  手前勝手な都合で、御迷惑をお掛けして、たいへん申し訳ありません。また、その節は、宜しく御願いします。

TRADKING
質問者

補足

 御礼をした後で、再び質問ということで、すみません。  下記の算式 >=IF(RSS|'1332.T'!現在値="",RSS|'1332.T'!○○○,RSS|'1332.T'!現在値) で、RSS|'1332.T'!○○○, も「空白」になってしまう場合について、次の選択肢に、  RSS|'1332.T'!△△△, を、選択させる場合、 =IF(RSS|'1332.T'!現在値="",RSS|'1332.T'!○○○,RSS|'1332.T'!△△△,RSS|'1332.T'!現在値) とすれば、良いのでしょうか?  EXCEL2002のヘルプをみても、そこまで詳しくは、書いていないので、そういった情報は、ネットのHP等、どのような所から、一体どうやって探してきたら良いのでしょうか?  良い御知恵が御座いましたら、教えて頂けないでしょか?

回答No.2

If Range("AA5").Value = "" Then Range("AA5").Formula = "=RSS|'1332.T'!○○○" End If でいいのかな?

TRADKING
質問者

お礼

いち早い回答有難うございます。  建設的な御意見であり、非常に有難く思います。上記式の中で、 (1)>If Range("AA5").Value  の括弧内の数字を("AA5:AA229")に変更した場合、  下の式は、  >Range("AA5").Formula   ⇒Range("AA5:AA229").Formulaに変更すれば、AA5からAA229まで、同一の作業を行ってくれるのでしょうか?  (2)また、そうした変更を加えるのであれば、AA6以下の各々のセルについても同様に、  >"=RSS|'1332.T'!○○○"(⇒「○○○」は「前日値」です)  を、  前の条件式、RSS|'1332.T'!現在値 と比較してみると、唯一の違い は、「○○○」の部分でしかないので、  「○○○」以前の数式「RSS|'1332.T'!」を上手に「置換」を使って、「入力式」を普遍化できないでしょうか?  手前勝手な、無理めな注文であることは、十分、承知しております。  そこを何卒、一度、乗りかかった船だと考慮して頂き、御回答くださ い     

TRADKING
質問者

補足

 私の為に、本日は、深夜までお付き合い頂き、誠に申し訳ありません。明日、また、下記の質問に、御答え頂けるよう、宜しく御願いします。  申し遅れましたこととして、念のため。 「RSS」というのは、「アドイン」を利用した「外部参照の特別なユーザー定義関数」であり、その為、「返される値が、空白」になってしまうのです。  他、私の、状況と件の問題の説明で解り難い点は、改めて「何なりと御説明致しますので」何卒、宜しく御願いします。

noname#46899
noname#46899
回答No.1

関数式もデータのひとつですから、関数式を入力したらそのセルは空白では有り得ません。したがって質問自体が成り立ちません。 ちなみにExcelのIF関数の文法は if(真偽式,THEN,ELSE) ですから、空白を判断する場合のIF関数の使い方は =if(ターゲットセル="","空白です","空白じゃありません") となります。 ところで、RSSなんて関数は無いと思いますけど?

TRADKING
質問者

お礼

 いち早い回答有難うございます。  「RSS」というのは、「アドイン」を利用した「外部参照の特別なユーザー定義関数」であり、その為、「返される値が、空白」になってしまうのです。私の説明で、お解かり頂けたでしょうか?  率直な御意見であり、非常に有難く思います。  ANo2さんのご意見ですが、御存知であれば、是非、お答え頂きたいのですが、宜しいでしょうか?  上記式の中で、 (1)>If Range("AA5").Value  の括弧内の数字を("AA5:AA229")に変更した場合、  下の式は、  >Range("AA5").Formula   ⇒Range("AA5:AA229").Formulaに変更すれば、AA5からAA229まで、同一の作業を行ってくれるのでしょうか?  (2)また、そうした変更を加えるのであれば、AA6以下の各々のセルについても同様に、  >"=RSS|'1332.T'!○○○"(⇒「○○○」は「前日値」です)  を、  前の条件式、RSS|'1332.T'!現在値 と比較してみると、唯一の違い は、「○○○」の部分でしかないので、  「○○○」以前の数式「RSS|'1332.T'!」を上手に「置換」を使って、「入力式」を普遍化できないでしょうか?  手前勝手な、無理めな注文であることは、十分、承知しております。  そこを何卒、一度、乗りかかった船だと考慮して頂き、御回答くださ い     

TRADKING
質問者

補足

私の為に、本日は、深夜までお付き合い頂き、誠に申し訳ありません。明日、また、下記の質問に、御答え頂けるよう、宜しく御願いします。  他、私の、状況と件の問題の説明で解り難い点は、改めて「何なりと御説明致しますので」何卒、宜しく御願いします。

関連するQ&A

専門家に質問してみよう