• 締切済み

エクセルの質問を二つお願いします。

二つほど教えてください。 質問1 A1に数式で=Bloom("IDN","JGBc1","TRDPRC_1") A4に140 A5に数式で=A3+1 標準モジュールに Sub t() Cells(3, 1).Value = Cells(1, 1).Value End Sub A1の戻り値は  #NAME?  となると思います。 もしA1が #NAME? だったら、A5の数式を=A4+1 となるように Sub t()のに書き加えたいです。 どうしたらよいでしょう?? 質問2 損益分岐点の計算です。 A1:5 A2:4 A3:3 A4:2 A5:1 A6:0 A7:1 A8:2 A9:3 A10:4 A11:5 B1に数式で"=A1-2",でB11までオートフィル そうすると、B1からB11まで3,2,1,0,-1,-2,-1,0,1,2,3となります。 で、B列の数値が0になる時点のセル番地のA4とA8, もしくはその時点でのA列の値をC1とC2に抽出したいです。 どうしたらよいでしょうか???

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

前の質問に続いて訳が判らない。 >A1に数式で=Bloom("IDN","JGBc1","TRDPRC_1") 突然関数らしきものを出してきても、何のことか判らない。Googleで照会しても、Bloom関数は出てこないし、エクセル関数では存在しないので、ユーザー関数か? ーー セルA1に有る式を入れていて、例=B1/C1 C1にVBAででも(手入力は当然でわかりやすいが)C1に0を入れると A1は#div/0!になる。 しかし、イベントとしてセルの値がエラーになったかどうかは瞬間的には知らせてくれるイベントはエクセルVBAでは無いと思う。 何時間後や何日後に、一斉処理でA1がエラーであるということを調べても、役に立たないのではないか。 であれば Sub test01() Cells(1, "C") = 0 If Cells(1, "A").Text = "#DIV/0!" Then MsgBox "EERR" 'ここに修正のコードを入れる Else MsgBox "OK" End If End Sub のようにセルの見てくれを調べるほか無いだろう。 == こういう関数とVBAの混合した問題にしないで、エラーになる場合をあらかじめ考えて、関数の式を組むべきではないか。 === #NAME?エラーは 関数名が違っています。入力ミスの場合、またはExcelで認識していない関数の名前を入れた場合にエラーとなります ですから、(質問のように)関数の引数(セルの値)の値を変えるのでは解決にならないのでは。 == 損益分疑点の問題なら、VBAや関数の問題をさておいて Googleで「損益分岐点 エクセル 関数」で照会して勉強したら。 全貌を明かさず、事情を小出しにして質問されると、回答者は困ってしまう。 == #2のご回答で正しいのなら、初めから質問の仕方・表現にもっと別の書きかただ有るでしょう。

hiroshi_sp
質問者

お礼

わざわざご回答いただいてありがとうございます。  午前中からの流れでお答えすると、まず、ベンダーというのは、ロイターやブルームバーグ等の情報通信会社のことです。そこで配信しているデータの引用関数が=Bloom("IDN","JGBc1","TRDPRC_1")などですが、それらはそのベンダーと契約していないともちろん無効な式です。しかし、契約していても株価や為替などの約定値がない場合など先に申し上げたエラーが出てくるのです。また、会社で接続していた状態でのファイルなどを自宅に持ち帰って検索する場合など、そのベンダーに接続していない場合も同じエラーが出てきます。 >#NAME?エラーは 関数名が違っています。入力ミスの場合、またはExcelで認識していない関数の名前を入れた場合にエラーとなります ですから、(質問のように)関数の引数(セルの値)の値を変えるのでは解決にならないのでは。 とのご指摘ですが、以上のような理由により、午前中の質問でわざわざ構文エラーなどではなくと申し上げました。 結果、#1の回答者様のお答えですべて解決です。  また、2番目の質問に関しましては私の質問の仕方に非があったと思います。ただ、損益分岐点は会計上のものではなく、複数銘柄の買付と売付などによる裁定取引のようなものの損益分岐点でして、単純に売り上げから経費を引いて…とかそういったものではございません。また、取引の内容などによって、例えば日経平均などで例示しますと9200円から9500円まではマイナスですがそれ以上かそれ以下かだとプラスになるなど、プラスマイナスの均衡点が2つから4つ出てきたりするものもあります。その内容は割愛させていただいて、簡単な例でご質問させていただいたわけです。  imogasi様のような専門的な方には逆に理解していただけなかったようなので、取り急ぎお礼だけを申し上げさせていただきます。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

質問2は、B列が0の行数が判れば良いのですよね。 単純にMATCHで調べては? B1:B11の値が0の列を2つ表示するには↓で良いかと。 C1:=IF(COUNTIF(B1:B11,0)>0,MATCH(0,B1:B11,0),"") C2:=IF(COUNTIF(B1:B11,0)>1,MATCH(0,OFFSET(B1,C1,0,11-C1),0)+C1,"")

hiroshi_sp
質問者

お礼

いけました!! ありがとうございました。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

質問1はこういうこと? Sub t() Cells(3, 1).Value = Cells(1, 1).Value If Cells(3, 1).Text = "#NAME?" Then Cells(5, 1).Formula = "=A4+1" Else Cells(5, 1).Formula = "=A3+1" End If End Sub 質問2は時間が無いのでパス

hiroshi_sp
質問者

お礼

あ… textでよかったんですね… OKです。目からウロコです。 ありがとうございます!!!!

関連するQ&A