- ベストアンサー
Excelの数式の簡素化について
=if(isna(VLOOKUP(R1C1,SOMERANGE,2,false)), "", VLOOKUP(R1C1,SOMERANGE,2,false)) =if(sum(SOMERANGE), sum(SOMERANGE), sum(OTHERRANGE)) のように、同じ式を数箇所に含む場合、無駄だなあと思いつつ、いつも仕方なく使ってますが、 もっと式を簡単にする方法はないでしょうか。 これらの式に対する具体例でも構いませんが、一般的にどんな方法が考えられますよ、 というアドバイスをいただけるととてもありがたいです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
私は、いままで掲示板等で書いてきた経験で言わせていただきます。Excelを始め、既存のアプリケーションの基本的な仕様に関わる部分に対してのご要望・ご質問(いわゆる個々のプリファレンス)というのは、99%不可能だと言って過言ではないと思います。 =IF(ISERROR(VLOOKUP(A1,$G$2:$J$30,3,False)),"",IS()) IFの条件による結果は、並列処理ですから、IF(条件,真,偽)のそれぞれの引数は、それぞれ独立したもので、それを使うためには、#2の misatoannaさんの方式しかありません。それをダメ出しする理由など、私には考えられません。 私の古い資料を出してみましたが、今から、約20年前のMS社の表計算を、日本のアスキー社を通して紹介したときから、その関数の使い方など、考え方はずっと変わっていないものです。 それと、もう1つ。関数は、エラーに対して特殊なエラーコードを吐くようにできています。このエラーコードは、すべての関数の戻り値に優先するようにできています。もしも、文字列のエラー値を出力するようにできれば、おっしゃる問題は解決するかもしれません。しかし、それができるのは、ユーザー定義関数として、自分で作る以外ありません。そのためには、VBAの勉強が必要になります。 同じ繰り返しがダメなら、以下のようにするしかありません。 =IF(COUNTIF(R1C5:R17C5,R1C1),VLOOKUP(R1C1,R1C5:R17C6,2,FALSE),"") 単に、パターンが変わっただけです。しかし、英語の文章を書いているわけではありませんから、こういうパターンを避けるロジックは、関数上では存在しないと思います。 =IF(ISNA(VLOOKUP(R1C1,MYRANGE,2,FALSE)), "", VLOOKUP(R1C1,MYRANGE,2,FALSE)) これで、なんの問題もありません。 もちろん、これだけに関してなら、このような逃げ方はあります。 例: =INDEX(R1C5:R11C6,COUNTIF(R1C5:R11C5,R1C1)*MATCH(R1C1,R1C5:R11C5,1),2) 5 6 列番号 ---------- 0 □ ←空白値を入れる 1 A 3 B 5 C 7 D 9 E 11 F 13 G 15 H 17 I 19 J それで良いか悪いのか、なんとも言えませんが、あえてする必要があるのでしょうか? なお、EXCELの基本的な使い方のひとつに、分かち書きしたり、名前を利用したりする方法があります。 6.名前の活用 7.配列数式 [XL] メモリを節約するワークシートの作成方法
その他の回答 (3)
- SAKURAMYLOVE
- ベストアンサー率30% (162/533)
私が以前に同じ質問をしています。 URLを参考にしてください。
お礼
ありがとうございました。 知りたいことはまさにこれでした。 やはりみんな同じこと考えるんですね。
- misatoanna
- ベストアンサー率58% (528/896)
シート内でいくつも同じ数式を使われるのでしたら、数式に名前を つけられたらいかがでしょうか。 [挿入]-[名前]-[定義]から、例えば 名 前: QQQ 参照範囲: =VLOOKUP(A1,$G$2:$J$30,3,False) のようにしておいて、数式では =IF(ISERROR(QQQ),"",QQQ) のように使います。
お礼
ありがとうございます。書き忘れてしまいましたが、別のセルは使わないでいい方法がないだろうか、と考えています。マクロもなしです。 言葉で説明するのも難しいのですが、下のようなイメージです。 =IF(ISERROR(VLOOKUP(A1,$G$2:$J$30,3,False)),"",IS()) IS()は、IS系関数で最後に評価された式の結果を取得する関数のつもりです(VLOOKUPの結果が返る)。このような仕組みがあれば便利だなーと思っているのですが。
- helonpa
- ベストアンサー率38% (108/278)
計算結果を別セルに格納しておくことですかね。例えば 「VLOOKUP(R1C1,SOMERANGE,2,false」をR1C2においとくとか。
お礼
早速のご回答ありがとうございます。書き忘れてしまいましたが、別のセルは使用しない前提で悩んでいます。
お礼
ご丁寧にありがとうございました。 今まで無駄だと思っていましたが、これで安心して式を書くことができます。