こんにちは。
エクセルについて過去ログに同じような質問が無かったので発言します。
初歩的な事ですみません。

数式が全く理解できないのでアドバイスお願いします。
下のような数式があるのですが、チンプンカンプンなんです。

=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がありましたら教えてください!

このQ&Aに関連する最新のQ&A

A 回答 (4件)

こんにちは。


なかなか難しい関数ですね。
とりあえず参考程度に呼んでください。
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つの関数を組み合わせています。
関数の意味はヘルプで見れるので参考にしてみてください。
    • good
    • 0

こんにちは!



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

つまらんから上の式を展開しちゃいましょう。



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

ですね。
厄介というか見難いというか
式をばらして別セルに書いてみれば分かりますよ。
    • good
    • 0

こ、これは高度な関数だな~(-_-;)


関数だけでなく、中身も高度です。
ちんぷんかんぷんでも無理ないかも(-_-;)

ネストって方法が使われています。
関数は引数としても使えるので。

しかも、これ、パレットでできない(手入力せざるをえない)数式だ(-_-;)

ここで意味、説明しても、多分、わからないと思いますので、アドバイスを。
市販の、初歩的な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,h …
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QエクセルではIF関数なのにアクセスではIIF関数?

なぜエクセルではIF関数なのにアクセスではIIF関数?

IF関数はアクセスではIIF関数になりますが、
なぜ「I」が増えるのでしょうか?

またIF関数はイフ関数と読みますが
IIF関数は「イイフ」関数と読めばいいのでしょうか?

よろしくお願い致します。

Aベストアンサー

>エクセルではIF関数なのにアクセスではIIF
アクセスでも、形だけについて言えば(関数とステートメントの違いはあるが形だけで言うと)
・クエリのグリッドで使う場合と
・VBAのモジュールで使う場合と
・アクセスのSQL文でどうか
あります。
アクセスでもVBAではIFは使えます。
クエリのグリッドではIFは使えないようだ(「式に未定義関数Ifがあります」、のエラー)。
SQLではIF,IIFは使えません。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=14014&KLOG=29
エクセル関数にも、IIF関数が増えたかと思ったが、まだ増えてないようだ。
エクセルでもVBAではIifが使えます。
伝統的にIIFがアクセスの方で設けられている。理由は聞いても誰にもわからないのではないか。
ーー
読み方は、ここに質問するより、Googleなどで照会するのが良い。
(こういう一般的な質問は、ここよりGoogleなどの照会のほうが良い。)
「iif 読み方」で照会。
「アイイフ」が多いようだ。
http://barbwire.blog49.fc2.com/blog-entry-43.html ほか

>エクセルではIF関数なのにアクセスではIIF
アクセスでも、形だけについて言えば(関数とステートメントの違いはあるが形だけで言うと)
・クエリのグリッドで使う場合と
・VBAのモジュールで使う場合と
・アクセスのSQL文でどうか
あります。
アクセスでもVBAではIFは使えます。
クエリのグリッドではIFは使えないようだ(「式に未定義関数Ifがあります」、のエラー)。
SQLではIF,IIFは使えません。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=14014&KLOG=29
エクセル関数に...続きを読む

Q=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $

いつもお世話になってます。
以下の関数式について、お時間がありましたらどうぞご教示ください。

=IF(ISNA(VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)),"",VLOOKUP($A1,sheet2!$A$1:$B $12,2,FALSE))

「シート2の範囲指定した表にA1セルの値と同じ値の右隣になる値を返せ。ただし該当なき場合は空白とせよ。」

純粋になんでこのような構文になるのかが解りません。

1.ISNAってそもそもなんでしょう?
2.同じ式を繰り返すのはなぜ?
(模範式で、このように同じ式を繰り返す構文があまり無いように思えたのです。)

・参考となる他所のページがあれば教えて下さい。
・素人です。お手柔らかにお願いします。

(エクセル2003)

Aベストアンサー

1.ISNAってそもそもなんでしょう?
ISで始まる情報関数の一つで、#N/A!エラーのみを判定する関数
結果はTRUE(真),FALSE(偽)のいずれかになります。
エラー判定のIS関数には他に
ISERR:#N/A!を除くすべてのエラーを判定する関数
ISERROR:すべてのエラーを判定する関数
があります。

2.同じ式を繰り返すのはなぜ?
ISNAの判定する値がセルでなく数式の結果だからです。
A2=VLOOKUP($A1,sheet2!$A$1:$B$12,2,FALSE)
なら
A3=IF(ISNA(A2),"",A2)
ということになります。A2のように計算の為のセルを省略する為に
=IF(ISNA(数式),"",数式)のように同じ数式を2回繰り返しになってます。

QエクセルIF関数について

エクセルIF関数について

お世話になっております。エクセルのIF関数について教えてください。

例えばA1に任意で入力する数字があるとします。
このA1の数字が4以下なら○、10以上なら×、5-9の間なら何も表示しないというような関数を組みたいのですが、どなたか教えていただけないでしょうか?

たぶん、IF関数だと思いますが、もし違うならその関数を教えてください。
よろしくお願いします。

Aベストアンサー

=IF(A1<=4,"○",IF(A1>=10,"×",""))

Q"$B$32:$H$32,$K$32:$N$32,$P$32:$AH$32" を変数に置き換えたい

こんにちは。よろしくお願いします。いつもgooの皆さんには大変お世話になっています。
エクセルは2013です。どなたか教えてください。

質問内容
Wクリックの範囲指定が現状はこのようになっています
If Not Intersect(Target, Range("$B$32:$H$32,$K$32:$N$32,$P$32:$AH$32")) Is Nothing Then

行を指定する32を
Dim shg as long
shg=32
とした場合、上記の範囲指定を & と変数 shg でつなげていくと、あまりにも長くなってしまいます
もっとスマートな書き方はないでしょうか

Aベストアンサー

If Not Intersect(Target, Rows(shg), Range("$B:$H, $K:$N, $P:$AH")) Is Nothing Then

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

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

お世話になっております。
エクセルのIF関数について教えてください。
あるセルの値がエラーなら0、数値が入っているなら、その数値をそのまま表示するという
関数を作りたいのですが、どのようにすればよろしいでしょうか?

Aベストアンサー

A1セルが空の場合には空で、エラーや数値でなければ0、数値であればその値を表示するとのことでしたら次のような式にないますね。

=IF(A1="","",IF(ISNUMBER(A1),A1,0))

QSUMPRODUCT($A$1:$A$10,$B$1:$B$10)とSUMPRODUCT($A$1:$A$10*$B$1:$B$10)

エクセルのSUMPRODUCT関数についてお尋ねします。

=SUMPRODUCT($A$1:$A$10,$B$1:$B$10)

=SUMPRODUCT($A$1:$A$10*$B$1:$B$10)
の違いは何でしょうか?
両者とも同じ答えを返しますが、いろいろ試したところ、前者は範囲内に文字列があってもそれを無視して計算し、後者は文字列があればエラーになるようですが、その理解で正しいでしょうか?
正しいとすれば、なぜでしょうか?

Aベストアンサー

こんばんは。

配列計算をしているのは言うまでもありませんが、この、SUMPRODUCT は、必ず、内部のひとまとまりから計算するという性質を持っています。ただ、VBAのように左から時系列かどうかは、言語が違いますから、分かりません。しかし、この引数は、パラメータ配列になっています。そして、その引数それぞれの有効値を調べて、それを演算出来る値かどうか調べます。

文字列を入れてもエラーにならないのは、元々、そこに注釈などを入れるために考えられたものです。値を文字列か数値かを精査して演算するように出来ています。最初、SUM関数に対し、そのように作られました。プログラムとしては、初歩的なものですが、そのアイデアは、今日まで、踏襲しているようです。このオリジナルの仕組みを考えたのは、VisiCalc の開発者、ブルックリン氏です。昔々、本で読んだことがあります。 PRODUCT関数とも共通です。3つの関数は、同じような仕様を持っています。

こちらが、本来の使い方です。

=SUMPRODUCT($A$1:$A$10,$B$1:$B$10)

つまり、
$A$1:$A$10 と $B$1:$B$10 の値を別々に取得しています。

では、
=SUMPRODUCT($A$1:$A$10,$B$1:$B$11)

とすると、なぜ、エラーが出るかというと、$B$11 に対応する数値が、NULL値(有効な値がない)だからです。それは、全体に反映させてしまいます。(理由は分かると思いますが、プログラムが途中で、エラーで止まってしまうからです)

ところが、こちらは、

=SUMPRODUCT($A$1:$A$10*$B$1:$B$10)

$A$1:$A$10*$B$1:$B$10 は、分割出来ません。したがって、この数式の中でのエラーは、そのまま、元の数式に反映されます。

ご自分で、ユーザー定義関数を作ってみれば分かります。VBAでも、同じように作ることが可能です。一度、試してみるとよいです。

こんばんは。

配列計算をしているのは言うまでもありませんが、この、SUMPRODUCT は、必ず、内部のひとまとまりから計算するという性質を持っています。ただ、VBAのように左から時系列かどうかは、言語が違いますから、分かりません。しかし、この引数は、パラメータ配列になっています。そして、その引数それぞれの有効値を調べて、それを演算出来る値かどうか調べます。

文字列を入れてもエラーにならないのは、元々、そこに注釈などを入れるために考えられたものです。値を文字列か数値かを精査して演算...続きを読む

QエクセルIF関数について

エクセルIF関数について

A2セルにA1セルが空白なら空白。8:00ならば、8:00。8:00>ならA3セルに(そのままの値を)表示せよ。
という関数を入れたいのですが、どの関数をどのように定義すれば良いのかわかりません。

IF関数かな?と思ったのですが、IF関数で偽のときは、「別のセルに入力せよ」などというような定義って出来るのでしょうか?

どなたか教えてください。

Aベストアンサー

関数では別のセルに値を代入する事はできませんので以下の方法になりますが如何でしょうか。
A2に=IF(A1="8:00"*1,A1,"")
A3に=IF(A1>"8:00"*1,A1,"")
因みにA2:A3は、セルの書式設定→表示形式で「時刻」から選択して下さい。

Q=IF(CF260<>0,ROUND(M262/CF260,0),0) の意味を教えてください。

お世話になります。
EXCELにおいて、=IF(CF260<>0,ROUND(M262/CF260,0),0) の数式の意味を教えてください。
宜しくお願い致します。

Aベストアンサー

追記

ROUND(M262/CF260,0)
         ↑ 桁数指定が"0"なので、整数部分の桁数。でした。

Qエクセル IF関数で質問です。

エクセル IF関数で質問です。

教えてください。下記の式はどういう意味ですか?
=IF(I38=0,"",SUM(C38:I38)/$B$38)

なかなかIF関数が覚えられません。簡単に理解できる方法はありませんか?

IFを入力するときにみなさんはどうイメージしてますか?

アドバイスください。

Aベストアンサー

>なかなかIF関数が覚えられません。

恐らく、IF 関数だけの問題ではありません。一つひとつの基礎知識の積み重ねです。この回答文を最後まで読んでみてください。

>簡単に理解できる方法はありませんか?

簡単な数式から超難解なものまで、様々なレベルがあります。お示しの数式は 2 つの関数を入れ子にしているので、最も単純な IF の使い方と比べれば、少しだけ難しくなっています。

>IFを入力するときにみなさんはどうイメージしてますか?

パソコンに最初に触れた頃は、どうだったでしょうね。今となっては、無意識です。

たまに複雑な数式を入力するときは、括弧の数が分かりづらいとかで、迷うというか時間がかかることもなくはないですが。難しくしようと思えば、幾らでも難しくなります。

基本的に私の場合は、Excel の「数式パレット」(fx ボタン)は使わずに数式をタイプすることを人にお勧めしています。数式パレットでは、数式が複雑になるほど入力しづらく、数式そのものに関する理解も進みにくいと考えているからです。「数式バー」などに直接タイプして入力していても、ヒントが適当にポップアップしてきたりします。インターネット上には、関数についての無数の情報もあります。いきなり難しい数式はムリでしょうが、だんだん色々なものを覚えていけばよいでしょう。


1.
セルに「数式」を入力するとき、先頭の「=」(今回の場合は IF の直前の「=」)は、「これから数式を記述しますよ」という Excel へのお知らせをしているのですが、それより後ろに「=」が出てくると、別な意味になります。「I38=0」のような等式あるいは不等式を「論理式」と呼んでいます。条件によっては、「I38>0」、「I38>=0」、「I38<0」、「I38<=0」、「I38<>0」が出てくることもあります。「>=」は「≧」の意味、「<>」は「≠」の意味です。

2.
論理式は、「論理値」を返します。Excel では「TRUE」、「FALSE」という 2 種類の論理値があります。I38 セルに 0 が入力されているか空白のとき、「I38=0」は TRUE に変化します。それ以外の場合は、FALSE になります。

3.
「"エクセル"」は、「エクセル」という「文字列」を数式中に混ぜるときの記述の仕方です。「""」は、「長さ 0 の文字列」です。これがセルに入力されていると、何も表示されないので見かけが空白のように見えます。私は空文字列と呼んでいることが多いのですが、最善の短い呼称は未だに分かりません。空白の文字列と言う人もいますが、厳密には空白ではないので、各種分析において「""」の存在がデメリットになるケースもあります。

4.
「C38:I38」は、「C38 セルを左上の頂点とし、I38 を右下の頂点とする長方形の『セル範囲』への『参照』」を意味する記号です。つまり C38~I38 という 1 行 7 列の範囲を参照します。

5.
SUM は、合計する関数です。その「引数」(ひきすう)にセル参照を書くと、範囲内にある「数値」を全て合計します。上の範囲であれば、「C38 の値 + D38 の値 + … + I38 の値」という計算結果の値を返します。なお、(参照で登場する場合の)文字列は「0」として合計します。SUM に限ったことではありませんが、関数が返す値(SUM であれば合計)を数式の途中に引用する場合は、その直前に「=」を付けません。しかし IF などを絡めず単にセルに合計を表示させたい場合は、「=sum(c38:i38)」と入力します。大文字/小文字の別は、多くの場合、混ぜこぜに書いても大丈夫。

6.
「/」は、数学における分数であり、「÷」でもあります。Excel ではいつも「/」と書きます。「*」は、「×」(掛け算)の意味です。「10^6」は、「10 の 6 乗」の意味です。

7.
「$B$38」は「絶対参照」、「B38」だと「相対参照」です。この違いは、参照が使われている数式(ご質問の IF の数式など)が入力されているセルを別の場所にコピペしてみるとよく分かります。貼り付けたセルの数式を見ると、相対参照では、「B」という「列番号」と「38」という「行番号」が別のものに書き換わっています。別のものというのは、参照元と参照先の相対的な位置関係を保持した番号になるということ。つまり、2 行下で 3 列右などといった、元の位置関係のことです。絶対参照では番号が書き換わらず、「$B$38」のまま固定されています。「B$38」とすると「$38」の部分のみ固定、「$B38」とすると「$B」の部分のみ固定となり、残りは書き換わります。ですから「$」は、数式をコピーするときに必要となる記号と考えればよいでしょう。コピーの中には、「オートフィル」も含まれますね。ドラッグやダブルクリックで多数のセルを埋める、あの機能です。

8.
IF は、二者択一の場合分けをする関数。第 1 引数が TRUE または非ゼロの数値であれば、第 2 引数を返します。第 1 引数が FALSE またはゼロという数値であれば、第 3 引数を返します。第 1 引数が文字列であれば、「#VALUE!」という「エラー値」を返します。

以下は、例を示します。各数式を Excel の数式バーに貼り付けるか、セルをダブルクリックして貼り付けて、結果を確かめてみてください。二つに一つの結果を選んでいるだけのことなので、実は簡単ですね?

=if(false,"エクセル","ワード")
=if(-1.2,"エクセル","ワード")
=if(0,"エクセル","ワード")
=if(,"エクセル","ワード")  ……「0」の省略

A1、B1 セルに入力されている値によって結果が変わる
=if(a1-b1,"エクセル","ワード")
=if(a1-b1>0,"エクセル","ワード")
=if(a1-b1>0,12,-0.3)
=if(a1-b1>0,a1-b1,a1)
=if(a1-b1>0,sum(a1:b1),sum(a1:b1)^2)
=a1+if(b1>0,b1,0)

>なかなかIF関数が覚えられません。

恐らく、IF 関数だけの問題ではありません。一つひとつの基礎知識の積み重ねです。この回答文を最後まで読んでみてください。

>簡単に理解できる方法はありませんか?

簡単な数式から超難解なものまで、様々なレベルがあります。お示しの数式は 2 つの関数を入れ子にしているので、最も単純な IF の使い方と比べれば、少しだけ難しくなっています。

>IFを入力するときにみなさんはどうイメージしてますか?

パソコンに最初に触れた頃は、どうだったでしょうね。今となっ...続きを読む

QExcel で、=IF(#REF=0,"",DZ13/CM13)

Excel で、

=IF(#REF=0,"",DZ13/CM13)

というデータが数多くあり、全てを

=IF(CM13=0,"",DZ13/CM13)

という具合に#REFを分母で置き換えたいです。
一括して行う方法はありますでしょうか。

Aベストアンサー

最初に数式が正常に入っていたのに、その参照していた列などを丸ごと削除してしまったから数式がトンジャッタのでしょうが、その場合は編集とか置き換えで修正するよりは、また数式をちゃんと入れなおしてオートフィルでまとめてコピーした方がはやいです。

でオートフィルでコピーする際、例えば「=A1/C2」を下にコピーしたら
「A2/C3」と自動的に数値が増減するわけですが、変更されたくない部分があったら「=$A1/$C$2」という形にしておくと下にコピーしても「=$A2/$C$2」のように変更したくない部分はロックした状態になります。


人気Q&Aランキング

おすすめ情報