• ベストアンサー

エクセルの関数教えてください

いつもお世話になっております。 郵便料金を反映させようと思い ここで皆様のお力を借りて =IF(AND(Q7<=30,Q7<=0),0,CHOOSE(Q7,180,210,290,290,340,340,340,340,340,450,450,450,450,"要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力")) という数式を入れて1~29までは反映させることが 出来たんですが30以上に「0」又は「宅急便」と表示させるにはどうしたら いいでしょうか? よろしくお願い致します。 OSは98 エクセルは97です。

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

  • ベストアンサー
  • aptiva
  • ベストアンサー率36% (193/529)
回答No.3

まず最初のANDは間違ってませんか? OR(Q7>=30,Q7<=0)のつもりだったのでは? もし、Q7が30以上の時、「0」と表示させるのであれば、 =IF(OR(Q7>=30,Q7<=0),0,CHOOSE(Q7,180,210,290,290,340,340,340,340,340,450,450,450,450,"要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力")) もし、Q7が30以上の時、「宅急便」と表示させるのであれば、 =IF(Q7<=0,0,IF(Q7>=30,"宅急便",CHOOSE(Q7,180,210,290,290,340,340,340,340,340,450,450,450,450,"要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力"))) で、いいはずです。

makirabi
質問者

お礼

ありがとうございます。 すいません「30以上」というのを汲んでくださって 助かりました。30以上は弊社負担なのをきれいさっぱり 忘れていたのでとても助かりました。 まさにこの通りです(~_~;) 感謝感謝です。

その他の回答 (4)

  • aptiva
  • ベストアンサー率36% (193/529)
回答No.5

もう一度です。 質問の内容が、Q7が30以上の時ということなので、 #2の方の式を補足させて頂くと =IF(ISNUMBER(Q7),IF(Q7<=0,0,IF(Q7>=30,"宅急便",VLOOKUP(Q7,Sheet2!$A$1:$B$29,2))),"") あと、参照するシート(Sheet2)のデータは以下のようになりますね。(15~29の分) A  B 1 180 2 210 3 290 4 290 5 340 6 340 7 340 8 340 9 340 10 450 11 450 12 450 13 450 14 要手入力 15 要手入力 16 要手入力 17 要手入力 18 要手入力 19 要手入力 20 要手入力 21 要手入力 22 要手入力 23 要手入力 24 要手入力 25 要手入力 26 要手入力 27 要手入力 28 要手入力 29 要手入力

makirabi
質問者

お礼

すぐのレスありがとうございます。 料金変わった時のメンテナンスを楽にするために 時間見つけてこっちに変更します。 (この仕事の〆切午前中なんですよ) しかしみなさまの知識には脱帽です。 (私がおばかなんですが) どうもありがとうございます。

  • aptiva
  • ベストアンサー率36% (193/529)
回答No.4

#3のものです。 なるほど、 #2の回答いいですね。 CHOOSE関数だと、29個までの条件しか指定できないですし、料金が変わった時のメンテナンスも、楽そうですね。 #2の回答に一票です。

makirabi
質問者

お礼

maruru01さんにはいつも助けてもらってます。 爪の垢が欲しいくらいです

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 あまりたくさんの条件をCHOOSE関数で記述すると、見づらいので、別の場所に対応表を作成しておいて、それを参照するのはどうでしょうか。 例えば、Sheet2のA1~B15に、 A  B 1 180 2 210 3 290 4 290 5 340 6 340 7 340 8 340 9 340 10 450 11 450 12 450 13 450 14 要手入力 30 宅急便 と入力しておきます。 そして、郵便料金を表示させるセルに、 =IF(ISNUMBER(Q7),IF(Q7<=0,0,VLOOKUP(Q7,Sheet2!$A$1:$B$15,2)),"") と入力します。 一応、Q7が数値以外の場合(空白も含む)は、「""」にする処理も付けておきました。

makirabi
質問者

お礼

maruru01さんいつもありがとうございます♪ 本当に助かります。 LOOKUP機能って便利ですね。 参考本読んでてもよく出てきますし。 問題はそれを理解できる脳みそが私に備わってないことですね。(T_T) これからもよろしくお願い致します。

  • hinebot
  • ベストアンサー率37% (1123/2963)
回答No.1

IFの中のAND関数が変に思います。 AND(Q7<=30,Q7<=0) となってますが、これだと「30以下かつ0以下」すなわち「0以下」で真(TRUE)、それ以外は偽(FALSE)ということです。 「30以上または0以下」と「1~29」で別けるべきと思われますので、式を =IF(OR(Q7>=30,Q7<=0),0,CHOOSE(Q7,180,210,290,290,340,340,340,340,340,450,450,450,450,"要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力")) とすれば、30以上でも"0" となります。 応用として、いったん空いているセルに =CHOOSE(Q7,180,210,290,290,340,340,340,340,340,450,450,450,450,"要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力","要手入力") と入れます。仮にこのセルを"R7"としますね。 で目的のセルには =IF(Q7<=0,0,IF(Q7>=30,"宅急便",R7)) と入れれば0以下なら「0」、1~29なら反映値、30以上なら「宅急便」とすることができます。 いったん、分割したのは、CHOOSE関数が長いためすっきりさせるためです。

makirabi
質問者

お礼

hinebotさんありがとうございます。 なるほどこういうやり方もあるんですね。 勉強になります。

関連するQ&A

  • 論理関数、IFとANDを組み合わせた場合

    いきなりですが・・・ =if(and(b11=0,b12+b13+b14+b15+b16=1),e7,if(and(b11=0,b12+b13+b14+b15+b16=2),e7*1/2,if(and(b11=0,b12+b13+b14+b15+b16=3),e7*1/3,if(and(b11=1,B12+b13+b14+b15+b16=1),e7*1/2,if(and(b11=1,B12+b13+b14+b15+b16=2),e7*1/4という具合で数式を入れていましたが、この流れで、30回くらい?繰り返し入力していたら、途中から急に貴方の関数は間違いです的な感じで数式が反映されなくなりました。 WORDみたいにある程度の入力したら、それ以上は無理という決まりがExcelにもあるのでしょうか? 何回も見直しましたが、私の入力ミスは見当りません。 誰か具体的な解答を教えていただけませんか? 因みに、ほとんどExcelに関しては素人です。 上記の数式?くらいなら反映されるのですが・・・。

  • エクセルの関数の貼り付け方法について

    エクセル2003を使用して関数計算表を作成しています。 IF関数の中にAND関数を使用して数式を作ったのですが そのままコピーしてしまうと変換してほしい数字が変換されません 下記に詳細を書きました エクセルのシート1にこのような基本形の数式があるとします =IF(AND(T4=2,D9=77),F8,"") 次にこの数式をシート2にコピーして =IF(AND(T6=2,D11=77),F10,"") というふうに変換したいのですが 現状ではコピーして貼り付けが終わった状態から 手で数字を一文字ずつ消して打ち直していますが膨大なデータ量でして 大変苦労をしています 何とか皆様のお知恵をお借りしたいと思いまして質問させていただきました よきアドバイス宜しくお願いいたします すみません。補足をします。 シート1のセルA1の数式がこれです =IF(AND(T4=2,D9=77),F8,"") このシート1のセルA1の数式 =IF(AND(T4=2,D9=77),F8,"")を シート2のセルA1にコピーして =IF(AND(T6=2,D11=77),F10,"") という数式にしたいのです 現状ではシート2のセルA1に貼り付けが終わった =IF(AND(T4=2,D9=77),F8,"")を T4→T6へ、D9→D11へ、F8→F10へ一つ一つ手入力で 修正しております。膨大なデータ量です(涙) お願いします

  • エクセルの関数?

    自分の力では解決できませんでしたのでお力添えください シート1にはお客様への送付状 シート2には郵便番号・住所・お客様名 のエクセルがあります。 シート1のあるセルにお客様の登録ナンバーを入力するとシート2から自動的に「郵便番号・住所・お客様名」がシート1に反映するような関数を知りたいのです 宜しくお願い致します

  • エクセルの関数の方

    エクセルの関数の入力方法について教えて下さい。 数式を入れてあるのですが、入力をそのセルにしない時は空セルにしたいのですが、0と表示されます。 IFを使うのではないかとは思うのですが、やり方がわかりません。 教えてください。

  • エクセルの関数について

    エクセルの初歩的な部分になってしまうかもですが… 例えば、A1に『1』B1に『1』を入力し、合計数をC1に入力したい場合は、C1に数式を入力すれば良い。のはできるのですが… C1に式が入力されてない状態で、A1とB1に数字を入れるとC1に反映される方法って何かないでしょうか…

  • エクセル関数に関して

    エクセル関数に関して質問です 「E8]に「0」が入力された場合は、「0」と表示させ、それ以外は計算値を表示させています 数式は以下です =IF((E8=0),E8,($J8*E8)/P8) 数式の値がエラーの場合(P8セルに数値が入力されていない時)はエラー表示になって しまうので、以下の数式を入れています =IF(ISERROR(($J5*E5)/P5),"入力待ち",($J5*E5)/P5) この時、「E8」が「0」の時は「0」表示、なお且つ数式がエラーの時は「入力待ち」とさせたい のですが、2つの数式を1つに書く事は出来ませんか? ご存じの方がおりましたら、ご教示願いたく 宜しくお願い致します

  • エクセル関数について

    教えて頂きたいんですが、エクセルの関数で=IF(シート!Q55="","○","")としている場合に シートIの55に何らかの数字が入力された場合は○も入力されないようにしたいんですが、 その関数の書き方はどうすればいいでしょうか? また元々の=IF(シート!Q55="","○","")の意味はシート!Q55に何もなければ○になるのは わかりますが、その右にある【,""】は何を意味しているんでしょうか? おわかりの方がいらっしゃいましたら教えてください。

  • エクセルの関数について(IF,AND関数)

    エクセルでIF,ANDを用いた関数計算の数式を作っているのですが、うまく出来ません。 どなたか詳しい方、教えて下さい。 たとえばこんな感じです。 ※条件は2個 ●第1条件~東京、大阪、北海道(3パターン) ●第2条件~数値の大小(3パターン) この2個の条件を満たす値、全部で9種類の計算パターンを実行できる数式を作ろうと思っています。 あともう1条件(IF文)入れたいのですが、これ以上入れると計算しません。 =IF(AND(B22>5000,B5="東京"),111,IF(AND(B22>=2000,B5="東京"),ROUND(300*B22^2/1000,4),IF(AND(B22<2000,B5="東京"),222,IF(AND(B22>5000,B5="大阪"),333,IF(AND(B22>=2000,B5="大阪"),ROUND(300*B22^2/1000,4),IF(AND(B22<2000,B5="大阪"),444,IF(AND(B22>5000,B5="北海道"),555,666)))))))

  • エクセルのIF関数について

    エクセルの数式でIFを使って、下記のような複数の条件の時に、それぞれの計算結果を算出する式を作りましたが、単純に条件を並べただけで(IFとAND使用)、式が長くなってしまいます。これを短く出来る式の方法はありますでしょうか?(他の関数を使用する方法など)また、エクセルの関数の数式を応用編まで詳しく調べられるサイトをご存知でしたら教えてください。 (条件の例)R1への式入力 (1)A1がに"A"か"B"かを入力 (2)A1がAで、B2の値がC3以下の時、R1には8、C3より大きい場合は、B2-C3の値を表示 (3)A1がBで、B2の値がC3以下の時、R1には5、C3より大きい場合は、(B2-C3)/2の値を表示 といった条件を満たすものが作成したいです。 ちなみに私が作成した式は、 =IF(AND(A1=A,B2<=C3),8),IF(AND(A1=A,B2>C3),B2-C3,・・・・)って感じです。こんな方法しか無いでしょうか?

  • エクセル関数についての質問です2

    本日エクセル関数の 『最右欄の数値を表示したい』と質問したものです。 ”エクセルを使用している中での質問です。 任意の欄のある列の最右欄の数値を帰したいと思い =IF(COUNT(C3:H3),LOOKUP(MAX(C3:H3)+1,C3:H3),"") という式を見つけました。 この場合、対象範囲に打ち込んだ数値の場合は表記されますが 数式を入れてある場合は表記されませんでした。 対象範囲が数式の場合でも表記される方法を教えて頂きたいのですが。 何卒宜しくお願い申し上げます。 当方64歳のエクセル初心者です。” という質問に対し ”一番簡単な方法は,あなたが埋めた数式を改良し,出すべき数字が無いときは「""」を計算する数式に修正します。 ""は数値ではないので,ご質問の数式はスルーしてくれて一番右の数字を引っ張ってきてくれます。” というご回答を頂戴しました。 ところが、初心者のため 『出すべき数字が無いときは「""」を計算する数式に修正します』 の部分についてどこをどのように修正すればよいかわかりません。 やりたいことは 添付画像のA欄にB欄の当月請求金額の数字を反映したいのですが、月によっては数字が無いときがあり数字が有るときの分だけを反映させたいと思っています。 改めて御指導をお願いします。

専門家に質問してみよう