[[20080806093253]] 『IFERRORを2003年版エクセルについて』(北国) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『IFERRORを2003年版エクセルについて』(北国)

 08年のエクセルだとIFERRORがあるのですが2003年のエクセルだとこれに相当する関数は何になるのでしょうか?

 いろいろ見たのですが見当たらず、これに代用できる数式を考えないとダメなのでしょうか?

 >これに代用できる数式を考えないとダメなのでしょうか?
 そのとおりです。

 基本形
 =IF(ISERROR(式),"エラー",式)

 ただしエラーの原因がはっきりしているならばその原因でチェックを行う。

 例
 「=A1/B1」で「#DIV/0!」対策であれば
 =IF(B1=0,"エラー",A1/B1)

 追記
 何年度版という表記ではなくEXCEL2007とかバージョン記名にしたほうがいいですよ。
 EXCEL2007はWindows版ですがEXCEL2008はMAC版です。
 (独覚)

 (独覚)さんありがとうございます

 表記の仕方も勉強になりました

 エラー値は#N/Aとなります
 INDEXで表から数値を選択するのですが、表には日によって選択する値が現れたり、なかったりするため、#N/Aとなる時があります

 IFを使うと6つのシートから各シートごとにINDEXを使い値を抽出するため
 式が長くなってしまうのです。
 そのため、関数などを使ってできないものかなと考えてました

 検索時のチェックであればCOUNTIF関数で検索範囲内に検索値があるかわかりますので

 =IF(COUNTIF(検索範囲,検索値),式,"ないよ")
 のような形でチェックできるかと。
 (独覚)

 =INDEX('前1 (2)'!$A:$O,MATCH($A25,'前1 (2)'!$A$1:$A$51,0),MATCH(G$1,'前1 (2)'!$A$3:$O$3,0))
 +INDEX('前2 (2)'!$A:$O,MATCH($A25,'前2 (2)'!$A$1:$A$51,0),MATCH(G$1,'前2 (2)'!$A$3:$O$3,0))
 +INDEX('前3 (2)'!$A:$O,MATCH($A25,'前3 (2)'!$A$1:$A$51,0),MATCH(G$1,'前3 (2)'!$A$3:$O$3,0))
 +INDEX('後1 (2)'!$A:$O,MATCH($A25,'後1 (2)'!$A$1:$A$51,0),MATCH(G$1,'後1 (2)'!$A$3:$O$3,0))
 +INDEX('後2 (2)'!$A:$O,MATCH($A25,'後2 (2)'!$A$1:$A$51,0),MATCH(G$1,'後2 (2)'!$A$3:$O$3,0))
 +INDEX('後3 (2)'!$A:$O,MATCH($A25,'後3 (2)'!$A$1:$A$51,0),MATCH(G$1,'後3 (2)'!$A$3:$O$3,0))

 式がこんな感じで長いので、各INDEXの関数ごとにIFを入れるしかないでしょうか?
(北国)

 いくつか質問をよろしいでしょうか?

 1.MATCH関数で検索する値は各シートに最大いくつありますか?
  (一つのシートに複数出てくることがありますか)

 2.どれかのシートにない場合(エラーになる場合)、結果はいりませんか?
  それともエラーのシートは「0」として結果を求めたいですか?

 3.「表から数値を選択するのですが」と書かれていますがINDEX関数の結果は数値だけですか?
  文字が混じることはないですか?
 (独覚)

 1 一つのシートからは検索する値は一つです
 2 0としたいです。各シートを合計していきたいので
 3 INDEXの結果は数値だけです。ただmatchで検索するのは文字であり、そこから数値として出してます。わかりづらかったらすいません

(北国)


	8	/09	8	/11	9
	売	買	売	買	売
エース 	2	0	28	0	10
岡地  	11	8	2	1	48
岡藤商事	0	11	0	0	46
岡安商事	0	3	0	3	0
エイチS	0	1	2	2	2
オリオン	0	0	0	0	0
カネツ商	2	0	0	0	0
シートはこんな感じです

 数式を+でつなぐのをやめ、作業列にひとつずつ入力するのが、
 簡単でわかりやすい方法かと思います。
 例えば作業列を Z1:Z6 とすると、エラーを考慮しつつ合計を出すには、

 =SUM(IF(ISERROR(Z1:Z6),0,Z1:Z6))  とし、配列数式なので
 Ctrl + Shift + Enter で確定させます。
 
(純丸)(o^-')b

 下記の式でどうでしょうか?

 =SUMPRODUCT(('前1 (2)'!$A$1:$A$51=$A25)*('前1 (2)'!$A$3:$O$3=G$1),'前1 (2)'!$A$1:$O$51)
 +SUMPRODUCT(('前2 (2)'!$A$1:$A$51=$A25)*('前2 (2)'!$A$3:$O$3=G$1),'前2 (2)'!$A$1:$O$51)
 +SUMPRODUCT(('前3 (2)'!$A$1:$A$51=$A25)*('前3 (2)'!$A$3:$O$3=G$1),'前3 (2)'!$A$1:$O$51)
 +SUMPRODUCT(('後1 (2)'!$A$1:$A$51=$A25)*('後1 (2)'!$A$3:$O$3=G$1),'後1 (2)'!$A$1:$O$51)
 +SUMPRODUCT(('後2 (2)'!$A$1:$A$51=$A25)*('後2 (2)'!$A$3:$O$3=G$1),'後2 (2)'!$A$1:$O$51)
 +SUMPRODUCT(('後3 (2)'!$A$1:$A$51=$A25)*('後3 (2)'!$A$3:$O$3=G$1),'後3 (2)'!$A$1:$O$51)

 見やすさのために一行ごとに改行されてます。
 コピペでつなげてください。

 追記
 よく見ると検索の範囲設定が少々変なように見えますが元の式に合わせておきます。
 (独覚)


純丸さん
作業列を作るのも一つの方法なんですね。
ただ例をあげてますが実際はもっと横に長いので作業列がとても長くなりそうです

独覚さん
ありがとうございます
例で言うと買の行はできたのですが、これを売りの行でするには−1をつけるだけでは無理でした
INDEXだと−1をつけてひとつ左にセルを抽出しているので、この数式から一つ左のセルを抽出するにはどうするといいでしょうか?
(北国)


 >INDEXだと−1をつけてひとつ左にセルを抽出しているので
 とすると横列で検索している範囲は実際にはA:OではなくB:Oなのかな?

 =SUMPRODUCT(('前1 (2)'!$A$1:$A$51=$A25)*('前1 (2)'!$B$3:$O$3=G$1),'前1 (2)'!$A$1:$N$51)
 +SUMPRODUCT(('前2 (2)'!$A$1:$A$51=$A25)*('前2 (2)'!$B$3:$O$3=G$1),'前2 (2)'!$A$1:$N$51)
 +SUMPRODUCT(('前3 (2)'!$A$1:$A$51=$A25)*('前3 (2)'!$B$3:$O$3=G$1),'前3 (2)'!$A$1:$N$51)
 +SUMPRODUCT(('後1 (2)'!$A$1:$A$51=$A25)*('後1 (2)'!$B$3:$O$3=G$1),'後1 (2)'!$A$1:$N$51)
 +SUMPRODUCT(('後2 (2)'!$A$1:$A$51=$A25)*('後2 (2)'!$B$3:$O$3=G$1),'後2 (2)'!$A$1:$N$51)
 +SUMPRODUCT(('後3 (2)'!$A$1:$A$51=$A25)*('後3 (2)'!$B$3:$O$3=G$1),'後3 (2)'!$A$1:$N$51)

 でどうでしょうか?
 見当違いであればごめんなさい。
 (いちおう、行は検索したままの行、列を検索した列の左の列を返すようにしています)
 (独覚)

独覚さん
ありがとうございます
できました

色々考えたんですが中々できなかったので、かなり感動してます
(北国)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.