• ベストアンサー

お暇な時でいいのでご助言ください。

普段ならググるなりして自己解決を計るのですが、現在入院中でPCネット環境の不備により、携帯電話から得られる情報量が限られてしまっているため、上手く精査できずにいるためこちらで質問させて下さい。 以下に記すエクセル関数の修正箇所や、簡略化できる箇所がありましたらご教授頂ければと思います。 ※携帯電話だと数字0と英字Oの区別がつかない機種があるため、英字は小文字表記します。 =if(or(sumifs(f7,g7,"↑")*(1+o3)+sumifs(f7,g7,"↓")*(1-o3)+sumifs(f7,g7,"")*0)=0,"",int(sumifs(f7,g7,"↑")*(1+o3)+sumifs(f7,g7,"↓")*(1-o3)+sumifs(f7,g7,"")*0)) やりたいこと (1)g7のセルに↑が入っている時は*(1+o3)の値[小数点以下切り捨て]を (2)g7のセルに↓が入っている時は*(1-o3)の値[小数点以下切り捨て]を (3)g7のセルが空白の時(0の時含む)は空白を それぞれ対象となるセルに返したいのです。 現在の結果 (1)、(2)は申し分なく反映されている。 (3)0値で返される。 なにぶん、乏しい知識を総動員した上で組み上げた式なので、間違い箇所があるのは重々承知しております。 大学卒業後すぐの入院だったため、退院後はすぐに職探しを考えねばなりません(まだ半年以上先ですが)。入院中にPCスキルを少しでも向上させようと、基本のoffice系から始めた次第です。 その一環として自分の血液検査のデータをエクセルを用いてまとめ、管理を試みたのですがうまくいっておりません。 恐らくint式が始まる直前の+sumifs(f7,g7,"")*0)=0,"",の部分に問題があるように思うのですが、 ※空白に0をかけても0になるわけではない為。 ならばどのように改変すれば目的の結果を得られるのか考えがまとまらないのです…

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

>g7に入っている文字列(記号としての"↑" "↓")によって、f7の値(変数)に*(1+o3)か*(1-o3)を実行し、アクティブセルにその結果を返したいのです(g7が空白の時は質問にあるように空白を返したい)。 これなら、単純に元の式を以下のように変更するだけです。 =INT(F7*IF(G7="↑",1+O3,IF(G7="↓",1-O3,0))) >この場合でもsumifsを使う必要は、もしかしたらないのでしょうか? そもそもSUMIFS関数は複数の検索条件で、集計データ範囲の数字を条件範囲のセルに合致する行だけ加算する関数です(このようなケースでは使用する関数ではありません)。 =SUMIFS(合計対象範囲,条件範囲1,条件1,・・・・) したがって、通常は「合計対象範囲」と「条件範囲1」の部分は1つのセルではなく複数のセルを選択します。 さらに、条件付きで加算する場合でも、検索条件が1つだけの場合は、SUMIF関数で対応できます(ただし、SUMIFS関数とは引数の順が違うので注意してください)。 =SUMIF(範囲,検索条件,合計対象範囲)

xYGx
質問者

お礼

細かい解説・注釈ありがとうございます。 [一つのセルに複数の関数]で検索かけた時に、私の希望と似たような条件下でSUMIFS関数を使った例式が出ていたので、完全に頭の中がそれ一色になってしまっていたようです(←もともとの知識不足もあって疑いすらしなかった)。 今回はとても助かりました。 ありがとうございます。

その他の回答 (1)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

そもそも例示されているSUMIFS関数を使う意味が全く不明です(例えばF7セルが、結果にどのように関係するのでしょうか?) >やりたいこと >(1)g7のセルに↑が入っている時は*(1+o3)の値[小数点以下切り捨て]を >(2)g7のセルに↓が入っている時は*(1-o3)の値[小数点以下切り捨て]を >(3)g7のセルが空白の時(0の時含む)は空白を >それぞれ対象となるセルに返したいのです。 上記の部分だけなら、以下のような関数になります。 =INT(IF(G7="↑",1+O3,IF(G7="↓",1-O3,0))) ただし、↑、↓以下の値が入力された場合は「0」と表示されますので、これを避けるには、以下のように、さらにIF関数で空白の場合は空白表示するように設定もできますが、たとえば数式をそのままにしてセルの書式設定で表示形式をユーザー設定にして「0;;;」などとするのが簡単かもしれません。 =IF(G7="","",元の式)

xYGx
質問者

補足

まずは、回答ありがとうございます。 そして、スミマセン。 条件説明不足でした。 g7に入っている文字列(記号としての"↑" "↓")によって、f7の値(変数)に*(1+o3)か*(1-o3)を実行し、アクティブセルにその結果を返したいのです(g7が空白の時は質問にあるように空白を返したい)。 この場合でもsumifsを使う必要は、もしかしたらないのでしょうか? そもそもの知識が基本情報処理程度しか無い上に、収入等の関係から教本も購入できず、且つ質問に書いたようにPCネット環境がないせいで得られる情報が少ないもので……スミマセン

関連するQ&A

専門家に質問してみよう