【復活求む!】惜しくも解散してしまったバンド|J-ROCK編 >>

循環参照が出た時に反復計算を有効にすると、
0にならず、答えが返ってきたのですが、
そもそも反復計算って何をしてくれてるんでしょうか?

計算を繰り返し行うって聞いたのですが、
循環参照を含んだ数式のままで、どうして答えを
返すのですか?

無知ですみません。
お詳しい方、教えてくださいませ。また参考サイトがあればぜひお願いします。

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

A 回答 (2件)

反復計算は、式の収束値を求めるのに使えます。

ですが正直、一般の人が仕事などで使いたいと思う機会は、あまりなさそうです。また、あまり分かりやすいともいえないかも。更には、何度も再計算する場合、途中の値が保存されないので、危険も伴います。

ただ、再計算のたびに値が変化していくことを利用して、「Excelで遊ぶ」目的で使うというのは、ネット上などで見かけます。例えば、「変化の最大値」がデフォルトの0.001に設定されている場合、

=a1+1

がA1セルに入力されていれば、循環参照なので反復計算されるのですが、再計算のたびに必ず、1ずつ増加していくことになります。何かこのセルを使って、リンク貼り付けの図とかグラフとかの表示を再計算のたびに変化させることもできるでしょう。あるいは将棋やトランプのように、一手一手、時が流れ、記録されていくゲームに使っているのも見たことがあります。RAND関数だけだと、ランダムにしかなりませんから。

ご関心があれば、インターネットで検索してみてください。
    • good
    • 3

循環計算の本来の使い方は、1回計算した結果を次の計算に使う方法です。


このとき計算式を工夫して、2回目の計算結果は前回計算した時よりも「変化幅が小さく」なるように仕込んでおきます。
上手く工夫できていれば、繰り返し計算が進むうちに変化幅がどんどん小さくなっていき、最後にはほとんど変化がなくなります。これを「収束した」と言います。
反復計算を行う目的は、この収束値を求めることです。

エクセルの反復計算のオプションには
 反復の回数
 収束を判定する条件として変化の最大値
をセットで設定できるようになっています。



計算例1:ダメな計算
反復計算にチェックを入れます
A1セルに
=A1+1
と記入し、Enterします

収束させる工夫をなにもしていないので、100まで行って反復計算の回数制限で終了し、そこで止まります


計算例2:意味があるかどうかはさておき、収束する例
反復計算にチェックを入れます
A1セルに
=1+A1/2
と記入し、Enterします
変化の最大値よりも「小さい」変化となった時点で反復計算が終了します。


勿論他にも使い方はいろいろあります。目的に応じて「正しく」利用します。



#参考
エクセルでは、わざわざ「反復計算」のテクニックなど使わずとも
1行目に1回目の計算式を並べる
2行目で、1行目の計算結果を使って2回目の計算をする数式を並べる
2行目を下向けにつるつるっとコピーする
すると
3行目で2行目の計算結果を使った計算結果が並び
4行目に3行目の計算結果を使った計算結果が並び
 :
最後には収束値が並ぶ
といった具合に、全く同じ計算をもっと安全に行う事もできます。
    • good
    • 2
この回答へのお礼

わかりやすい説明ありがとうございます!

お礼日時:2012/08/01 20:41

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

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

Qエクセルで行ごとに繰り返しの計算の方法。A列の入力のみで。

計算機、手書きにより行っている事務処理がありましてエクセルで処理できないものかと思い質問させて頂きました。下記の様な計算になります。
    A      B      C       D  
1   300   
2   500     200   600     620
3   750     250    750      770
4   830     80    240      260
5   990     160    480      500

A列が基準の行になります。A1は初期値とお考えください。A2よりご説明いたします。
A2-A1=B2  B2×3=C2  C2+20=D2
この計算の繰り返しになります。

上記の計算をA列の入力だけで実行する事は可能でしょうか?
エクセル初心者中の初心者でしてオートサムを最近覚えたぐらいでして、もし可能でしたらどこでどのような設定をすれば良いかご教授頂けないでしょうか。。お願いいたします。

また、計算中にあります「3,20」といった値は行ごとに変化し、他シート内のセルより引用出来ればと思っています。
合わせて他シート内セルより値を引用する事も可能でしょうか?方法等も合わせてご質問したく存じます。
質問もへたくそですみません。
どうかよろしくお願いいたします。

計算機、手書きにより行っている事務処理がありましてエクセルで処理できないものかと思い質問させて頂きました。下記の様な計算になります。
    A      B      C       D  
1   300   
2   500     200   600     620
3   750     250    750      770
4   830     80    240      260
5   990     160    480      500

A列が基準の行になります。A1は初期値とお考えください。A2よりご説明いたし...続きを読む

Aベストアンサー

えっ出来てるじゃありませんか
>A2-A1=B2  B2×3=C2  C2+20=D2
これがそのまま回答です
ただし、Excelにはちょっとしたルールがありまして
それをちょっとだけアドバイスします
A2-A1=B2これだと、Excelが文字列なのか数式なのか解りません
そこでExcelに、これは数式だと認識させる必要があります
認識させる方法が最初に「=」を入力します
後は「=」につづき数式を入力すればOKです
例をあげますと
=A2-A1
このようになります
しかし、ここで一つ問題があります、B2に答えを表示したいのに
B2が書いてありません、が、心配は無用です
B2に「=」から始まる数式を入力することによりB2を省略できるのです
逆に言うと、数式を入力したセルにしか答えを表示できません
数式の例を幾つか上げます
=A2-A1 足し算
=B2+20 引き算
=C2*3 掛け算
=D2/D3 割り算
=(A1-B2)/C3*D4

他のシートの値を引用する方法
=Sheet2!A1+A1
のように引用したいシート名!セルです
シート名とセルを区別するために「!」を間に入れます
稚拙な説明で解りましたでしょうか?
分からないことがあれば、また質問してください
お待ちしています

えっ出来てるじゃありませんか
>A2-A1=B2  B2×3=C2  C2+20=D2
これがそのまま回答です
ただし、Excelにはちょっとしたルールがありまして
それをちょっとだけアドバイスします
A2-A1=B2これだと、Excelが文字列なのか数式なのか解りません
そこでExcelに、これは数式だと認識させる必要があります
認識させる方法が最初に「=」を入力します
後は「=」につづき数式を入力すればOKです
例をあげますと
=A2-A1
このようになります
しかし、ここで一つ問題があります、B2に答えを表示し...続きを読む

Qエクセル関数【指定条件で繰り返し】

色々検索やら、考えてみたのですが、解決できずで質問させていただきました。

エクセル2003なのですが、やりたい内容としては

   A    B    
1    1     りんご
2    1     みかん
3    2    すいか
4    1    なし
5    3    いちご
・・・
・・・
・・・


という内容を、別シートに関数でA1から

   A  
1    りんご
2    みかん
3    すいか
4    すいか
5    なし
6    いちご
7    いちご
8    いちご
・・・
・・・
・・・

という形でできればと思っているのですが。

どなたか教えてくださると助かります!!
やはり固定の数字でないと中々難しいでしょうか?ひねっても全然頭にでてきません。。。

Aベストアンサー

シート1のC1は0でC2セルには次の式を入力し下方にオートフィルドラッグでした。

=IF(B2="","",SUM(A$2:A2))

Qエクセルの反復計算について

エクセルの反復計算についてテキストに次のように書かれていました。

数式によってはゴールシークで解答が見つからずに、長時間計算を繰りかえすことがあります。
そのような場合には、反復計算の設定をしておくと、計算を途中で中断指せたり、ゴールシークを使わずに手動で再計算を実行して解答を求めたりすることができます。反復計算を使うと、計算を繰り返す上限の回数と計算結果の変化の度合いを設定することができます。

反復計算について以下の質問をさせてください。
①エクセルの計算機能を使っても答えがでない、計算を何度か繰り返すと答えが変わるとはどのような場面なのか?

②答えが出ない、計算を何度か繰り返すということは数式が間違っているのか?

③エクセルが反復計算をするような複雑な数式とはどのようなものか?

④計算結果の変化の度合い、とはどういう意味か?どの場面で使うのか?


エクセルを万能のソフトと思っていた私はエクセルができないことがあるのか!?
と不思議な気持ちです。
お分かりになる方 ご教授くださいませ<(_ _)>

Aベストアンサー

#2の回答者です。

後で、自分の書いたことを考え直してみましたが、今どき、微分で反復計算なんてありえませんね。暴走するかもしれないし、グラフも書けません。
ただ、根拠としては、繰り返し計算用の関数というのが昔あったからなのです。
ITERCNT(), DELTA() この二つが、ゴールシークに取り込まれたものだと思います。

「④計算結果の変化の度合い」は、そのDELTA()関数を移行したものだと思うのです。

もう一つのデータテーブル側にも回答をつけておきますが、Excelには古い機能が一杯残っているようです。だから、統合というのは、内部では、R1C1方式でしか受け付けません。マクロ関数のセル位置も同様です。

だから、使わなくなった機能も一杯あります。

新しいもの未知のものに興味がおありですか?

Excel には、ODBC, Olap Cube, Jet なんていうものがあります。
先日、ここの質疑で、ODBC(Excelの備え付けのデータベース)の解答した人には、完全に脱帽です。私は、もうパラメータクエリの作り方も忘れてしまいました。

それに、シートには、ワークシート、グラフシート、マクロシート、ダイアログシートの4つあるのはあまり知られていません。

最近の流行(私のマイブーム?)は XML と Office Ribbon、Excel-DNA、VSTO (Visual Studio Tools For Office-Free)などです。

余計な話ですみません。

#2の回答者です。

後で、自分の書いたことを考え直してみましたが、今どき、微分で反復計算なんてありえませんね。暴走するかもしれないし、グラフも書けません。
ただ、根拠としては、繰り返し計算用の関数というのが昔あったからなのです。
ITERCNT(), DELTA() この二つが、ゴールシークに取り込まれたものだと思います。

「④計算結果の変化の度合い」は、そのDELTA()関数を移行したものだと思うのです。

もう一つのデータテーブル側にも回答をつけておきますが、Excelには古い機能が一杯残っているようです...続きを読む

Qエクセルで数式の結果が反映されない(自動計算になっているのに)

すいません、教えてください。

エクセル(XP)で数式が自動計算されなくなって
しまいました。

  ※ツールのオプションはちゃんと自動計算に
   なっているのに全く反映されません。

今まで全く問題なく作業できていたので
原因が分からず困っています。

数式等のエラーだとは考えにくいです。
と言うのも数式のあるセルをダブルクリックして
選択し、そのままEnterキーを押すと計算結果が
反映されます。
ただ、今まで全て自動計算されていたのが
全く動かなくなってしまったんです。

同じようなトラブルを経験された方、又は
詳しい方、どうかよろしくお願いします。

Aベストアンサー

原因は分からずじまいになってしまいましたが
同じことがありました。

「Officeの救急隊」を試してみましょう。
ボタン一発で全ての設定が元に戻ります。
http://www.vector.co.jp/soft/win95/util/se247118.html
(ツールバーなども初期状態に戻ります)

私の場合はコレで直ってしまいました^^

参考URL:http://www.vector.co.jp/soft/win95/util/se247118.html

Qエクセルのループ計算?方法について

エクセルにおいて同じ計算式?を指定回数繰り返す方法を教えてください。
一つ一つ計算する方法は↓
A B C
1 10,000 0.2 =A1*B1
2 =A1-C1 0.2 =A2*B2
3 =A2-C2 0.2 =A3*B3
というように1年毎に前年度の求めたCの列の数値を差し引きし、その額をA列から控除して毎年度繰り返し計算する減価償却定率法の計算の答えを一発で3年と入力すれば、C列の合計額を求める方法を教えてください。

Aベストアンサー

3年の3が仮にD1にあるとしたら

=A1-A1*(1-B1)^D1

直接、 =A1-A1*(1-B1)^3 としてもOK

Qエクセル 0や空白のセルをグラフに反映させない方法

以下の点でどなたかお教えください。

H18.1~H20.12までの毎月の売上高を表に記載し、その表を元にグラフを作成しています。グラフに反映させる表の範囲はH18.1~H20.12の全てです。
そのためまだ経過していない期間のセルが空白になり、そこがグラフに反映され見づらくなります。
データを入力する都度グラフの範囲を変更すればいいのですが、うまく算式や設定等で空白や0円となっているセルをグラフに反映させない方法はありますか?

お手数ですが、よろしくお願いいたします。

Aベストアンサー

売上高のセルは数式で求められているのですよね?
それなら
=IF(現在の数式=0,NA(),現在の数式)
としてみてください。
つまり、0の場合はN/Aエラーにしてしまうんです。N/Aエラーはグラフに反映されません。

Qエクセル STDEVとSTDEVPの違い

エクセルの統計関数で標準偏差を求める時、STDEVとSTDEVPがあります。両者の違いが良くわかりません。
宜しかったら、恐縮ですが、以下の具体例で、『噛み砕いて』教えて下さい。
(例)
セルA1~A13に1~13の数字を入力、平均値=7、STDEVでは3.89444、STDEVPでは3.741657となります。
また、平均値7と各数字の差を取り、それを2乗し、総和を取る(182)、これをデータの個数13で割る(14)、この平方根を取ると3.741657となります。
では、STDEVとSTDEVPの違いは何なのでしょうか?統計のことは疎く、お手数ですが、サルにもわかるようご教授頂きたく、お願い致します。

Aベストアンサー

データが母集団そのものからとったか、標本データかで違います。また母集団そのものだったとしても(例えばクラス全員というような)、その背景にさらならる母集団(例えば学年全体)を想定して比較するような時もありますので、その場合は標本となります。
で標本データの時はSTDEVを使って、母集団の時はSTDEVPをつかうことになります。
公式の違いは分母がn-1(STDEV)かn(STDEVP)かの違いしかありません。まぁ感覚的に理解するなら、分母がn-1になるということはそれだけ結果が大きくなるわけで、つまりそれだけのりしろを多くもって推測に当たるというようなことになります。
AとBの違いがあるかないかという推測をする時、通常は標本同士の検証になるわけですので、偏差を余裕をもってわざとちょっと大きめに見るということで、それだけ確証の度合いを上げるというわけです。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

Q循環参照を解除したい。

現在定年退職をしていますが、エクセルについては、サラリーマン時代、自分の業務に使っていて、表計算などに利用していました。エクセルについて、作表、函数など、とりあえずの簡単なことは何とか分かりますが、あまり深くは分かりません。現在使っているパソコンで、簡単な表を管理しているんですが、最近からファイルを開くと、計算式が自分が設定していた式ではなくて、ややこしい循環参照なるものになっているようです。循環参照そのものの使い方も、意味もわからないし、なぜそういうのが設定されたのかも分かりません。いずれにせよ、使わないので解除したいのですが、いろいろやってみても出来ません。どなたか知っている方がいらっしゃいましたら教えてください。出来ましたら、なぜそうなったのか(原因)も教えてください。

Aベストアンサー

循環参照は機能というよりエラーです。
何かの拍子に自分自身の値を参照にした式が入力されたのでしょう。

例えばセルA10に=SUM(A1:A10)のように直接参照しているか
A1が=B1、b1が=C1、C1が=A1、というように間接参照しているかです。

Excelのバージョンによるかもしれませんが、ステータスバー(一番下)にエラーを起こしているセルが表示されていませんか?

循環参照があると「表示」→「ツールバー」の中に「循環参照」があると思いますのでチェックしてツールバーを表示させて下さい。
ステータスバーに指摘されたセルを選んで参照元のボタン等を使って循環を見つけて直して下さい。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング