• ベストアンサー

ムズかしい数式

こんにちは。 エクセルについて過去ログに同じような質問が無かったので発言します。 初歩的な事ですみません。 数式が全く理解できないのでアドバイスお願いします。 下のような数式があるのですが、チンプンカンプンなんです。 =IF(AND(B35="",C34="",C35=""),"",IF(AND(C35>0,C35<>""),FIXED(C35,0),IF(A34>0,FIXED(A34,0),0))&"×"&IF(RIGHT(FIXED(IF(B35>0,B35,$B$4)/100,2))="0",FIXED(IF(B35>0,B35,IF($B$4>0,$B$4,100))/100,1),FIXED(IF(B35>0,B35,IF($B$4>0,$B$4,100))/100,2))) エクセルの教科書にはオートSUM程度の数式しか載っていないのですが、 よいHPがありましたら教えてください!

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

  • ベストアンサー
  • imu_ka
  • ベストアンサー率60% (9/15)
回答No.2

こんにちは。 なかなか難しい関数ですね。 とりあえず参考程度に呼んでください。 1つ1つの関数を解説していきます。 ■IF関数   =IF(論理式, 真の場合, 偽の場合)  指定された条件が TRUE (真) のとき 真の場合 を返し、FALSE (偽) のとき 偽の場合 を返します。  簡単なIF関数として   =IF(A1=0,"○","×")   「A1セルが0の場合は○をその他は×を表示する」という意味になります。   ※IF関数は入れ子にできます。    =IF(論理式, 真の場合,IF(論理式, 真の場合, 偽の場合))    という感じに。 ■AND関数   =AND(論理式1, 論理式2, …論理式30)  すべての引数が TRUE のとき、TRUE を返します。引数が 1 つでも FALSE である場合、戻り値は FALSE になります。  簡単なAND関数として   =AND(A1=0,B1=0)   「A1とB1が0の場合はTRUEを、その他はFALSを表示する」という意味になります。 ■FIXED関数   =FIXED(数値, 桁数, (桁区切り))  数値を四捨五入し、ピリオド (.) とカンマ (,) を使って書式設定した文字列に変換します。  簡単なFIXED関数として   =FIXED(1234.56,0)   「1234.56を小数点第0位(整数)に四捨五入する」という意味になります。   回答は「1,235」となり、文字列に変換されます。 ■RIGHT関数   =RIGHT(文字列, 文字数)  文字列の末尾 (右端) から指定された数の文字を返します。  簡単なRIGHT関数として   =RIGHT("あいうえお",2)   「あいうえおの右から2番目まで表示する」という意味になります。   回答は「あい」となります。 この4つの関数を組み合わせています。 関数の意味はヘルプで見れるので参考にしてみてください。

その他の回答 (3)

  • kukkychan
  • ベストアンサー率12% (23/190)
回答No.4

こんにちは! 上記式に関する解説は何人かの方が書いているので 書きません。 「よいホームページがありましたら教えてください」 との事ですが、 エクセルのヘルプ機能は活用していますか?? エクセル関数はすべてヘルプ機能で検索すれば 丁寧な解説が書いてあります。 あとはその個々の関数を応用すれば 上記のような式になるので、 自分で1個1個関数の使用方法を検索し、見てみるのも 結構勉強になるんじゃないでしょうか!!

  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.3

つまらんから上の式を展開しちゃいましょう。 1.もし「B35とC34とC35のセルが空白(何も値が入っていなかったら)」の場合は"空白"を設定する。 以下処理A 2.1の条件以外なら「C35が0以上でC35が空白でない」の場合は"C35を四捨五入"する。 3.1,2の条件以外なら「C34が0以上」の場合は"C34を四捨五入"する 4.3以外なら"0"を設定する。 以下処理B 処理A & "×" 以下処理C 5.「B35が0以上」の時"B35"のセル値をそれ以外はB4のセルの値を100で割り、少数点第2位で四捨五入する。 6.その結果を「右から1文字取った結果が0」の場合、7の結果をそれ以外なら8結果 7.「B35が0以上」の時は"B35"のセルの値をそれ以外の場合は「B4が0以上」なら"B4"のセル値をそれ以外なら"100"を100で割り小数点第1位で四捨五入する。 8.「B35が0以上」の時は"B35"のセルの値をそれ以外の場合は「B4が0以上」なら"B4"のセル値をそれ以外なら"100"を100で割り小数点第2位で四捨五入する。 ※式が間違ってないかい?※で囲んでいる所がない。 >))&"×"&IF(RIGHT(FIXED(IF(B35>0,B35,$B$4)/100,2),※1※)="0", 結果 B35、C34、C35が空白の時は空白 それ以外は処理A × 処理C ですね。 厄介というか見難いというか 式をばらして別セルに書いてみれば分かりますよ。

  • himehime
  • ベストアンサー率37% (133/354)
回答No.1

こ、これは高度な関数だな~(-_-;) 関数だけでなく、中身も高度です。 ちんぷんかんぷんでも無理ないかも(-_-;) ネストって方法が使われています。 関数は引数としても使えるので。 しかも、これ、パレットでできない(手入力せざるをえない)数式だ(-_-;) ここで意味、説明しても、多分、わからないと思いますので、アドバイスを。 市販の、初歩的なExcelの本には載っていないと思いますので、 Excel関数専門の本が本屋に行けばあると思いますから、 それ買った方がいいようにおもいます。 (ネストはともかく、単体の関数の説明はわかるとおもいます。) とりあえずですね、 B35と、C34と、C35以外のセルのどこか一つをアクティブセルにしてその数式そのまま、コピーしちゃってください。 F35に数式コピーしたとしますね。 C35に、0と入れてみてくださいね。 で次に、C35をDeleteキーでいったん消して、1って入れてみてください。 で次に、C35をDeleteキーでいったん消して、2って入れてみてください。 F35に結果がでるので、 これで、結果はどうなるかはわかりますので。 まあ、他にもいろいろ入っているんですけど。 数式は、数字や、""の「中」の文字や数字を変えて、実験して、どう変わるか確認した方が早いと思いますよ。 (でも、最初に練習するべき数式ではないですね(-_-;)これ。高度すぎます。) とりあえず、有名どころのHPを二つ入れておきますね。 前者は、個人ユーザー、後者は、Excelの本の著者のホームページです。 後者は、スクロールすると、「関数の極意」というところがありますので、そこをクリック。 ただ、二つとも、多分、現段階では、高度すぎるとおもいます。

参考URL:
http://www2.odn.ne.jp/excel/waza/function.html,http://pcgaz.nikkeibp.co.jp/pg/pcgaz/excel/index.shtml

関連するQ&A

  • エクセルの数式を教えてください。

    質問が悪かったようなので、詳しく書きます。 A1に1、B1に1の場合はA/B、B1に1、C1に1の場合はB/C、C1に1、D1に1の場合はC/Dとなるような数式はありますでしょうか? 下記の数式をどう改良したら良いかわかりません。 =IF(AND(SUM(A1:B1)=2,A1=1,B1=1),"A/B","") 宜しくお願いいたします。

  • セルに数式が入ってるかどうかを取得する関数は?

    C1には、=SUM(A1:B1) C2には、0 が入力されています。 実際、A1:B1の値は0なので、 C1もC2も0が表示されています。 D列で、ちゃんとC列にsum関数が入ってるか調べてたいのですが =COUNTIF(C1,"*sum*") をオートフィルしても、0が返ります。 C3に「sum」と言う文字列を入れて、=COUNTIF(C3,"*sum*")をしたら 1が返りました。 COUNTIF関数は文字列は認識しますが数式は認識しないようです。 このような場合、セルに数式が入ってるかを取得する方法はありますか?

  • Excelで数式の説明

    Excelで下の数式 =IF(AND(E5>=250,G5>=250),"A",IF(H5>=450,"B","C")) の意味を人に説明する場合、どう説明すればよいのでしょうか?

  • エクセルの数式を教えてください。

    仕事で使う請求書など作っています。 その表で数量(A1) 単価(B1) 計(C1) 数量かける単価=計 そして数量が入力ないときは¥0と出したくないので (C1)の数式は  =IF(ISBLANK(A1),"",SUM(A1*B1)) にしました。ここまでは良かったのですが 単価のところには3m2のように数字以外を入れることになるのでエラーになってしまいました。 そこでm2などが入った場合でも数字だけを読み取って計算してくれる数式を教えてください。よろしくお願いします。

  • エクセルの数式がわかりません・・・

    とても初歩的な質問で恥ずかしいのですが、エクセルの数式がまったくわからないため質問させていただきます。 計算したいのはとても簡単なのですが、(A1:A34)のそれぞれの数値の合計に30000を掛けたものと、 (A35:A40)のそれぞれの数値の合計に20000を掛けた合計をA41で合計を出したいのです。 =SUM((A1:A34)*30000)+SUM((A35:A40)*20000) エラーでした^^; 正しい数式を教えていただけませんでしょうか? よろしくお願いいたします。

  • 数式内のセルのオートフィル

    数式内のセルのオートフィル エラー値 #N/Aを返す数式 =IF(A1=0,NA(),A1) をA2に入力しているのですが、 この式ををA2~R2まで入力したいと思っています。 ひとつひとつ、=IF(A1=0,NA(),A1)、=IF(B1=0,NA(),B1)、=IF(C1=0,NA(),C1)…と 入力していけばいい話なのですが、 数が多いため、オートフィル機能のような形で連続セルを入力したいのですが、 なにかよい方法はないでしょうか?

  • エクセル2010の絶対参照について。

    エクセル2010についての質問です。 ファイルはエクセル2003?2007?のものを互換モードで使っております。 よろしくお願い致します。 sheet1のセルA1に、別のシート(Sheet2)のA2~A11の合計をオートサムで求めると数式が=SUM([Sheet2.xls]Sheet2!$A$2:$A$11)となっています。 sheet1のセルB1に数式=SUM([Sheet2.xls]Sheet2!$B$2:$B$11) sheet1のセルC1に数式=SUM([Sheet2.xls]Sheet2!$C$2:$C$11) sheet1のセルD1に数式=SUM([Sheet2.xls]Sheet2!$D$2:$D$11) をオートフィルか、コピーアンドペイストで素早くやりたいのですが、 数式の$を消して、=SUM([Sheet2.xls]Sheet2!A2:A11)でオートフィルでできるのですが、 自動で$が入力されるのがなぜだか分かりません。 $が自動で入力される理由と、$があるなしの違いを、理解してる方に聞きたいと思い 質問しました。 よろしくお願い致します。

  • 数式を教えてください。(エクセル)

    教えてください。 A1セルに100、B1に200、C3に-300 A2セルに-50、B2に50、C3に-50 があるとします。 で、縦の計算法を常に引き算をしたいのです。(A1-A2のように) オートSUMの場合、Aの列はちゃんと計算できると思うのですが、そうするとBの列は250になってしまいますよね。 この答えは200-50=150としたいのです。 またC列は、-300引く-50で、答えは-250としたいのですが・・・ マイナスを認識しつつ、セルの数値がプラス・マイナスにかかわらず すべて引き算計算をしたいのですが、 そういう数式ってありますか?

  • 配列数式について

    A     B 2007/9/1  10 2007/9/2  11 ↓ 2007/9/30  9 上記のように入力されています。 9/1~9/5までの金額を集計します。 配列数式を使用してやって見たのですが うまくいきません。よろしくご指導お願いいたします。 {=sum(if(A2:A31>=2007/9/1)*(A2:A31<=2007/9/6),B2:B31))}

  • IF関数を使った数式がおかしいのですが…

    エクセルに詳しくない為、下の数式のどこがおかしいのか全くわかりません。どうかよろしくお願いします。 ・B1が「0」であればC1は「×」 ・B1が「0」以外でA1とA2の両方が「◎」ならC1は「◎」 ・または、B1が「0」以外でA1とA2の両方が「△」ならC1は「△」 ・B1が「0」以外で、A1とA2の両方が「◎」または「△」に揃っていない場合はC1は「○」 …となるようにしたいのですが、どうしてもうまく表示されません(A1が「○か△」でA2が「◎」の時は正常に表示されるのですが、A1「◎」でA2「○か△」の時にどうしても「◎」となってしまいます)。 C1のセルに入力している数式は、 =IF(B1=0,"×",IF(A1:A2="◎","◎",IF(A1:A2="△","△","○"))) です。自分なりに調べてみたもののさっぱりです。IF関数 では無理なのでしょうか…。 よろしくお願いいたします。

専門家に質問してみよう