• ベストアンサー

関数の条件式に不足分を補いたいのですが。

ご指導して頂ければ幸いです。      A        B       C 1   太郎     次郎    三郎 2   1000 という状態でB1に名前があればA2の数値に対して5%、名前が無ければ空白という内容にしたくてB2には=IF(B1="","",A2*0.05)と入力し名前があれば結果は50になる様に、そしてC2にはC1に名前が無ければ空白、C1に名前があればA2の数が400以下なら10%、2500以下なら12%、9900以下なら11%、10000以上なら11%の値を入る様にしてC2の結果にはB1に名前があればB2に値が出るので差し引き70の結果を名前が無ければB2に値が無いのでそのまま120と結果を出せる様にしたくて下記の =IF(D2="","",IF(B3<=400,B3*0.1,IF(B3<=2500,B3*0.12,IF(B3<=9900,B3*0.11,IF(B3<=10000,B3*0.11))))) という関数を作成して途中で行き詰まり混乱してる状態です。 助けてください。お願いします。

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

  • ベストアンサー
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.3

ついでに。 「わかんねえ部分は適当に11%でいいよ、聞くのメドイから」って場合は =IF(C1="","",IF(A2<=400,A2*0.1,IF(A2<=2500,A2*0.12,A2*0.11))-IF(B1="",0,B2)) でOK。なぜなら「400以下でもなく、2500以下でもなかったら、全部11%」になるから。 それと、バカ正直に「B1が空白だったら引かない、B1が空白じゃなかったらB2を引く」って式を1つ1つ書く必要はない。 「B1が空白だったら引かない」は「B1が空白だったら0を引く」と同じ。だったら「B1が空白かどうかで、最後に0またはB2を引く」でOKだ。

isseiboc
質問者

お礼

理屈の後にわかり易い式を教えていただけて光栄です。 私は何でも面倒くさいのは嫌いなので式を考えてるだけでイライラしてたのでこの様な簡潔な内容の式がある事も知らずに今回投稿してchie65536さんに回答いただけた事が嬉しく思います。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • age_momo
  • ベストアンサー率52% (327/622)
回答No.5

#1,4です。途中までできているんですから、それを活用すればいいんですよ。 例えばC行には条件に従って数字を決める式を作り、表示やBを引く引かないを D行でやってみましょう。 A1  太郎 A2  1000 B1  次郎 B2  =IF(B1="","",A2*0.05) C2  =IF(A2<=400,A2*0.1,IF(A2<=2500,A2*0.12,A2*0.11)) D1  三郎 D2  =IF(D1="","",IF(B1="",C2,C2-B2)) こうしておいてC行を隠せばいいと思います。 あるいはC行にはA2にかける数字を表示するというのでも いいと思います。 A1  太郎 A2  1000 B1  次郎 B2  =IF(B1="","",A2*0.05) C2  =IF(A2<=400,0.1,IF(A2<=2500,0.12,0.11)) D1  三郎 D2  =IF(D1="","",IF(B1="",A2*C2,A2*C2-B2)) 本質的には同じことをやっています。

isseiboc
質問者

お礼

ありがとうございます!! お礼が遅くなりました。これはかなり参考になります。しかし、回答してくださる皆さんはいったいどの様に関数式の命令文を把握されてるのですか?私は本屋で関数式の本を見るだけではさっぱり理解できません。やはり自分でいろいろ試して経験する事が大事なんですかね!? 今回も貴重なアドバイスを有難うございました。また、ご縁があればご指導宜しくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • age_momo
  • ベストアンサー率52% (327/622)
回答No.4

#1です。一つだけ忠告しておきます。 わざわざ全部に条件式を書いたのは#3さんの方法で書くと C1が""の時にC2が  "" - 0  となってエラーが出るからですよ。 色々な流儀と書いたのもそのことを踏まえた上です。 条件付書式で消したり、作業エリアを設けたりなど 簡単にしたり、見た目を整える方法はありますから。。。 本来、一つのセルで済ませる必要はないです。簡単にするなら メンテや変更がし易くなるよう、1行、間に作業エリアを 設けて隠す方がいいと思いますよ。

isseiboc
質問者

お礼

やはり(本来、一つのセルで済ませる必要はないです。簡単にするなら メンテや変更がし易くなるよう、1行、間に作業エリアを 設けて隠す方がいいと思いますよ。)の方が効率が良いですよね!? イメージでその様に出来たらって思いはしたのですがやはり知識不足の為、方法が見出せずにいた結果がこのザマです。もし、お時間が許す時にサンプルをいただけませんか?ワガママ言って申し訳ありません。

全文を見る
すると、全ての回答が全文表示されます。
  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

>A2の数が400以下なら10%、2500以下なら12%、9900以下なら11%、10000以上なら11%の値 まず、数直線の各部が何%になるか整理してみましょう。 負の無限大~400(400含む)=10% 400(400含まず)~2500(2500含む)=12% 2500(2500含まず)~9900(9900含む)=11% 9900(9900含まず)~10000(10000含まず)=なんぼやねん?知るかボケ 10000(10000含む)~正の無限大=11% 数直線では、上記のように、5つの部分に分かれます。 「9900(9900含まず)~10000(10000含まず)」が何%なのか気になりますが、判りませんね。 >途中で行き詰まり混乱してる状態です。 たぶん「9900(9900含まず)~10000(10000含まず)」が何%なのか判らないので、そこで行き詰まったんでしょう。 「書いてない事は関数に出来ない」ので「そこが何%になるか知ってる誰かに聞く必要」があります。 「9900(9900含まず)~10000(10000含まず)」が何%なのか判らない限りは、いくら悩んだって永久に答えは出ないので、こんな所で質問なんかしてないで「そこが何%になるか知ってる誰か」に何%にすれば良いか聞いて来て下さい。 話はそれからです。

isseiboc
質問者

お礼

回答していただいて有難う御座います。 お礼が遅くなり申し訳ありません。 式を教えていただける事も勿論ありがたい事ですがchie65536さんのように理屈を教えてくれるのも教養の無い私には理屈も学べてありがたいです。今後の参考にさせていただきます。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • age_momo
  • ベストアンサー率52% (327/622)
回答No.1

落ち着いてくださいね。途中から質問が分け分からなくなっていますよ。 出ている式も文章と合ってないし、後、9900以下も10000以下も同じですね。。。 結局、C2にはB3にデータが出ていれば引き算、なければそのままの数字を 出すような式ということですかね。 色々流儀があると思いますが、質問者さんの式を手直しすると次のように なると思います。 =IF(C1="","",IF(A2<=400,IF(B1="",A2*0.1,A2*0.1-B2),IF(A2<=2500, IF(B1="",A2*0.12,A2*0.12-B2),IF(A2<=9900,IF(B1="",A2*0.11,A2*0.11-B2), IF(A2<=10000,IF(B1="",A2*0.11,A2*0.11-B2))))))

isseiboc
質問者

お礼

丁寧に式を入力してくれて有難う御座います。 お礼が遅くなった事、大変失礼しました。 かなり補足したかったこと、修正できそうです。関数式の理屈が全くわからないままあの様な粗末な内容にもかかわらず回答していただいて本当に有難う御座いました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 関数の条件式が解らず、教えてください。

    関数のド素人で自分であれこれ試した結果。解答する事が出来ずに行き詰まってます。助けて下さい。 1  A     B     C 2 氏 名  山田太郎 3 入金額    40    ? といった状態でC3の[?]にC2に名前が入ればC3に結果を出し、無ければ空白という前提でB3の金額が40以下なら10%、50以上250以内なら11%、260以上990以内なら11.5%になるという結果の算出方法を教えて下さい。

  • 複数条件の関数を教えてください。

    表)  A B C 1 2 各セルには下記の情報しか入りません。 A1:空白、-、その他の値 B1:空白、-、その他の値 C1:プルダウンで(1)~(5)までのいずれかの値 ※その他の値には、「空白」、「-」、以外で「様々な文字列」が入ります。(ランダム) この場合で、A2のセルに下記の計算式を入れたいです。 A1、B1のいずれかにその他の値が入り、かつC1で(2)が選ばれていた場合には1を立てたい。 A1、B1が空白と-しかない場合には、空白にしたい。 A1、B1のいずれかにその他の値が入っても、C1が(2)ではない場合は空白にしたい。 この場合どのように設定すればいいのでしょうか。 当初は、A1、B1に入るのは「-、その他の値」のみで空白がなかったため下記の設定を していましたが、空白条件が増えたため設定方法がわかりません。 A2=if(OR(A<>"-",B<>"-"),IF(C1="(2)",1,""),"") よろしくお願いします。

  • エクセルで文字列を数えて一覧表にしたいのですが

    たとえばですが、2人一組で配達に行きます。 メンバーは、太郎、次郎、三郎、四郎、五郎・・・と多人数です。 A1に太郎、B1に三郎 A2に次郎、B2に五郎 A3に太郎、B3に次郎 ・ ・ ・ と、いうような表ができます。 このとき、*郎は何回配達にいったのかをカウントしたいのです。 *郎は、A、Bのどちらに登場するかわかりませんし、 何回も登場しますし、組み合わせもばらばらです。 最終的に、太郎 15回、次郎 8回、三郎 21回・・・というように分かるようにしたいので、 仮にD1に太郎、E1に次郎、F1に三郎・・・の名前 (ダブって登場する名前を一つにまとめて、登場する全ての名前を残したい)、 D2に太郎、E2次郎、F2に三郎の回数(登場した名前の回数を数字で求めたい) というようにしたいのです。 エクセルの詳しい方、よろしくお願いします。

  • 【Excel VBA】コピー&ペーストの自動化

    以下のエクセル表があり、同じ日付ごとのデータを自動的に別のシートに移したいです。 例えば、別のシートに、2004/1/1に書かれているデータのみを移す。(シート2参照) それをVBAで書くにはどうすればいいでしょうか。 マクロの記録をするのではなく、この表の日付を増やしたり変えたりしても機能するようにコードを書きたいと思っております。 For LoopとIf thenを使い、A1セルがそれより下のセルの値と異なるまでコピーし続ける、、といった作業をすればよいのでしょうか。 全くの初心者で勉強中です。よろしくお願いいたします。 列行 A B 1 2004/1/1 太郎 2 2004/1/1 次郎 3 2004/1/1 三郎 4 2004/1/1 一郎 5 2004/1/1 五郎 6 2005/3/3 三郎 7 2005/3/3 次郎 8 2005/3/3 太郎 9 2005/3/3 四朗 10 2006/2/2 次郎 11 2006/2/2 一郎 12 2006/2/2 太郎 シート2 2004/1/1 太郎 次郎 三郎 一郎 五郎 シート3 2005/3/3 三郎 次郎 太郎 四朗 シート4 2006/2/2 次郎 一郎 太郎

  • 別セルで選択した内容に応じて、表示項目を変えるには

    すいません。 色々サイトを巡回して勉強したのですが、どうしても分からない関数がある為、質問させて頂きます。 まず、E1~E7の欄に、次のようなリストをつくります。 E1「太郎」、E2「次郎」、E3「三郎」、E4「花子」、E5「咲子」、E6「椿」、E7「他人」 次に、入力規則を使って、A1に、E1~E7のリストを表示させます。 ここまでは全く問題ありません。 しかし、B1に次のような設定にしようとすると、上手く行かないのです。 (1)A1で「太郎・次郎・三郎」のいずれかを選択したら、B1に、C1に入力しておいた文が表示される。 (2)A1で「花子・咲子・椿」のいずれかを選択したら、B1に、C2に入力しておいた文が表示される。 (3)A1で「他人」を選択したら、B1に、C3に入力しておいた文が表示される。 (4)A1にそれ以外の文字を入力したら、B1に、C4に入力しておいた文が表示される。 (5)A1に「不明」と入力したら、B1は空白になる。 (6)A1を空白にしておけば、B1も空白のまま。 という設定にする。 (7)B1に何か表示される度に、かならず語尾に*印(他の記号でも可)が付く。 色々勉強して、↓のような関数を書いたのですが、 =IF(A1="太郎",C10,IF(A1="次郎",C10,IF(A1="三郎",C10,IF(A1="花子",C20,IF(A1="咲子",C20,IF(A1="椿",C20,IF(A1="不明","",IF(A1=" ","")))))) 今ひとつ上手くゆきません。関数が長すぎるので、簡略化も試みましたが、これも上手く行きませんでした。 それに、(7)の方法に関しては全くわかりません。 このような場合、どんな関数を書けば良いのでしょうか?

  • 条件式で差額

      A    B    C    D 1 2 1000              といった状態に、 B2に(B1に入力があればA2の3%の結果を、無ければ0を)の式を =IF(B1="","0",A2*0.03) C2に(C1に入力があればA2の10%の結果を、ただしB2に値が有ればその差額を、無ければ0を)の式を =IF(C1="","0",A2*0.1)-IF(B1="",0,B2) D2に(D1に入力があればA2の12%の結果を、ただしB2またはc2のどちらかに値が有ればその差額を、無ければ0を)の式を =IF(D1="","0",A2*0.12)-IF(B1="",0,B2)-IF(C1="",0,C2) と表記すると例えばB1とD1に入力があればB2=30,D2=90で結果は問題ないのですがC2に(-30)と表示され、同様にB1のみ入力だとC2:D2に(-30)と表示されて困ってます。 この(-30)の表示をさせない正しい条件式が見当もつかず今回投稿させてもらいました。どうか皆さんご助力お願いします。

  • エクセル IF関数が入った条件付き書式について

    エクセルにおいて、セルA1、B1、C1があるとします。A1、B1には数値が何も入力されていない状態で、C1に計算式「=SUM(A1)/B1」が入っているとします。このままでは、C1は、「#DIV/0!」と表示されます。 この表示を消すために、C1にIF、ISERROR関数を使い、「=IF(ISERROR(SUM(A1)/B1),"",SUM(A1)/B1)」の計算式を入力します。 このままでもいいのですが、C1の値が「10以上」になった時に、C1のセルに色を付けたいのです。 書式→条件付き書式→セルの値が→次の値以上→10 にすると、セルに何も値が入っていない(空白)状態で色だけが付いてしまいます。 色々調べると、IF関数の""の空白が文字列のため、数値より大きいとみなされている事が原因っていうことは、分かりましたが、色々試してみても出来ません。何かいい方法はございますでしょうか? ご教授お願いします。

  • 【初心者】ACCESSで異なるテーブルの数値を比較~計算したいです。

    またまたACCESSに詳しい方がいましたらお教え下さい。 テーブルA 名前|金額 ----------- 太郎|3000 次郎|2000 三郎|1000 テーブルB 名前|借入 ----------- 太郎|1000 次郎|2000 三郎|3000 こんなテーブルが2つあった場合。(名前フィールドはAもBも同じ) クエリで金額と借入を比較し、金額>借入の場合に表示。かつ表示するものは金額-借入の 数値とする場合は、どのようにすればいいでしょうか。。 (金額<借入の場合は表示自体しなくて良い) 【結果イメージ】 名前|結果 ----------- 太郎|2000 ご存知の方がいらしたら、お教え下さい。

  • エクセル関数について教えてください。

    A1-0       B1-0 A2-100       B2-200 A3-0       B3-50 A4-80      B4-0 A5-250      B5-100 というセルの値があり、それぞれのAとBを比べたとき、 (1)どちらも0の場合は ”空白” (2)値が2倍以上、または2倍以下の時は ”×” という結果をC列に出したいです。 IF関数を使用してやってみたのですが、値が0の場合エラーになったり 上手くできません・・・。 教えてください、よろしくお願いします。

  • Excelで該当する名前を挙げるには?

    vlookupは使えるのですが以下のような方法は作りこまないと出来ないでしょうか? 手動でソートして、そのデータから何かを作るような数ステップは手動でも構いません。 出来るだけ簡単な方法がありましたら教えてください。 マクロとかデータベースとか別のソフトとか使うと簡単なのかもしれませんが Excelの基本的な関数で作りたいです。 データ1 A組:1番:太郎 A組:2番:次郎 A組:3番:三郎 B組:以下略 ・・・ 質問:データ1からA組に該当する名前を羅列せよ。 答え: A組:「太郎、次郎、三郎」 「太郎、次郎、三郎」の文字列を取得したいです。