アプリ版:「スタンプのみでお礼する」機能のリリースについて

=if(isna(VLOOKUP(R1C1,SOMERANGE,2,false)), "", VLOOKUP(R1C1,SOMERANGE,2,false))
=if(sum(SOMERANGE), sum(SOMERANGE), sum(OTHERRANGE))
のように、同じ式を数箇所に含む場合、無駄だなあと思いつつ、いつも仕方なく使ってますが、
もっと式を簡単にする方法はないでしょうか。
これらの式に対する具体例でも構いませんが、一般的にどんな方法が考えられますよ、
というアドバイスをいただけるととてもありがたいです。

A 回答 (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] メモリを節約するワークシートの作成方法

参考URL:http://support.microsoft.com/default.aspx?scid=h …
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございました。
今まで無駄だと思っていましたが、これで安心して式を書くことができます。

お礼日時:2005/06/20 11:20

私が以前に同じ質問をしています。


URLを参考にしてください。

参考URL:http://security.okweb.jp/kotaeru.php3?q=909023
    • good
    • 0
この回答へのお礼

ありがとうございました。
知りたいことはまさにこれでした。
やはりみんな同じこと考えるんですね。

お礼日時:2005/06/20 11:11

シート内でいくつも同じ数式を使われるのでしたら、数式に名前を


つけられたらいかがでしょうか。

[挿入]-[名前]-[定義]から、例えば
  名   前: QQQ
  参照範囲: =VLOOKUP(A1,$G$2:$J$30,3,False)
のようにしておいて、数式では
  =IF(ISERROR(QQQ),"",QQQ)
のように使います。
    • good
    • 0
この回答へのお礼

ありがとうございます。書き忘れてしまいましたが、別のセルは使わないでいい方法がないだろうか、と考えています。マクロもなしです。
言葉で説明するのも難しいのですが、下のようなイメージです。
=IF(ISERROR(VLOOKUP(A1,$G$2:$J$30,3,False)),"",IS())
IS()は、IS系関数で最後に評価された式の結果を取得する関数のつもりです(VLOOKUPの結果が返る)。このような仕組みがあれば便利だなーと思っているのですが。

お礼日時:2005/06/18 09:50

計算結果を別セルに格納しておくことですかね。

例えば
「VLOOKUP(R1C1,SOMERANGE,2,false」をR1C2においとくとか。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。書き忘れてしまいましたが、別のセルは使用しない前提で悩んでいます。

お礼日時:2005/06/18 03:05

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