dポイントプレゼントキャンペーン実施中!

Excel2007を使っています。ドロップダウンで選択した項目ごとに計算式を変更できる方法を教えてください。


まず、D5にはデータの入力規則で「入力値の種類」をリストとしました。「元の値」にEUR/GBP,USD/JPYと2種類入力し、ドロップダウンで二つを選択できるようにしました。

C11にもD5同様、ドロップダウンで「買い」と「売り」という二つの選択肢を作成しました。

D5に「EUR/GBP」を選択し、C11を「買い」と選択した場合。
仮にE11に0.6485とL11に0.6550のような数字が入るとした場合はK11に=ROUND((L11-E11)*10000,0)と65という答えを求めます。
しかし、C11が「売り」を選択した場合は、K11に=ROUND((E11-L11)*10000,0)と違う計算ができるようにしたいと思っています。

また、D5にUSD/JPYを選択し、C11を「買い」とした場合。
仮にE11には90.50とL11には90.20というような数字が入るとして、計算式を=ROUND((K11-E11)*100,0)で-30という答えを求めます。
しかしC11が「売り」を選択した場合は、=ROUND((E11-K11)*100,0)という計算式を求めるようにしたいと思っています。

ドロップダウンが複数ある場合、選択した項目ごとに別々の計算式を自動で変更できるようにする方法があれば教えてください。

よろしくお願いします。

A 回答 (1件)

4種類の式の選択ですよね


IF文を組み合わせれば出来ます。
しかし、質問の内容ですが
C11が 買いと売りで 正負を逆にする つまり、買い はそのまま 売り は-1を掛ける
D5がEUR/GBP ならば L列、それ以外はK列になる
ですよね
=IF(C11="売り",-1,1)*ROUND((IF(D5="EUR/GBP",L11,K11)-E11)*1000,0)
とか良くないですか。
>選択した項目ごとに別々の計算式を自動で変更できるようにする方法
とか難しく考える前に、お仕事の内容というかやりたいことを整理してみると
思わぬ整理がヒントとして浮かんできます。

この回答への補足

ご回答ありがとうございます。
私の質問内容が間違っていました。質問を投稿した後に気づいたのですが、教えてgooが一度投稿してしまうと質問内容を編集できなくて訂正できませんでした。下記の部分のK11はL11の間違いです。

>また、D5にUSD/JPYを選択し、C11を「買い」とした場合。
>仮にE11には90.50とL11には90.20というような数字が入るとして、計算式を>=ROUND((K11-E11)*100,0)で-30という答えを求めます。
>しかしC11が「売り」を選択した場合は、=ROUND((E11-K11)*100,0)という計
>算式を求めるようにしたいと思っています。
                  
                 ↓修正後

また、D5にUSD/JPYを選択し、C11を「買い」とした場合。
仮にE11には90.50とL11には90.20というような数字が入るとして、計算式を=ROUND((L11-E11)*100,0)で-30という答えを求めます。
しかしC11が「売り」を選択した場合は、=ROUND((E11-L11)*100,0)という計算式を求めるようにしたいと思っています。

IF分を使いマイナスを掛けて答えを求めるとはとても勉強になりました。ありがとうございました。
なにせ頭が固いもので少し情報を整理してみたいと思います。

D5がEUR/GBPとUSD/JPYの二つの選択肢、C11は買いと売りの二つの選択肢・・・。時間がかかりそうです。もしよろしければヒントをお与えくださいませか?

よろしくお願いします。

補足日時:2010/02/01 20:06
    • good
    • 1
この回答へのお礼

自分でなんとか解決できましたので、解決方法を記載しておきます。


D5に4通貨
USD/JPY、GBP/JPY、EUR/USD、GBP/USD
C11に買と売の二つの選択肢ある
E11が取引時の価格
K11が取引終了時の価格と仮定した場合

=IF(AND(OR(D5="GBP/JPY",D5="USD/JPY"),C11="買"),ROUND((K11-E11)*100,0),IF(AND(OR(D5="GBP/JPY",D5="USD/JPY"),C11="売"),ROUND((E11-K11)*100,0),IF(AND(OR(D5="EUR/USD",D5="GBP/USD"),C11="買"),ROUND((K11-E11)*10000,0),IF(AND(OR(C5="EUR/USD",C5="GBP/USD"),C11="売"),ROUND((E11-K11)*10000,0),""))))

でうまく計算できました。
ご協力いただきありがとうございました。

お礼日時:2010/02/02 21:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!