dポイントプレゼントキャンペーン実施中!

シートが2枚あり1枚は名簿シートです。
別シートのセルA1に名簿シートのコード番号を入力し
セルA2にVLOOKUP関数で式を下記のように入れています。

=VLOOKUP(A1,名簿!N:P,3,FALSE)

このとき値がブランクになるときがあるので
そのときは隣の列から数値を拾い出したいのです。
そこで

=VLOOKUP(A1,名簿!N:Q,4,FALSE)

だと思うのですがですが、自分でIFで式を組んだら

=IF(VLOOKUP(A1,名簿!N:P,3,FALSE)="",VLOOKUP(A1,名簿!N:Q,4,FALSE),VLOOKUP(A1,名簿!N:P,3,FALSE))

となりました。
一応、希望通りの答えが返されるのですが、
もっと簡潔な組み方はあるのでしょうか??
IFでなくても何か方法があるのでしょうか??
よろしくご教授お願いします。

A 回答 (4件)

簡単かって言われると微妙なんですが、



=vlookup(A1,名簿!N:Q,4-and(len(vlookup(A1,名簿!N:Q,3,FALSE)),TRUE),FALSE)

という手口もあります。「3列目の長さが0じゃなければ3列目、0なら
4列目を返せ」と、if関数を使わずに言っています。
    • good
    • 2
この回答へのお礼

早速のご回答ありがとうございます。
仕事が終わってただいま家に戻ってまいりました。
上記の式を使って、希望通りの結果でした。
len関数に初めて出会いました。
早速helpで勉強してみます。

お礼日時:2005/06/23 21:32

No.2です。



>式の違いで、ブック自体の重さが変わるとか、処理速度に違いが出るということはあるのでしょうか?
今回の場合は、質問欄の数式も私や他の回答者の数式も、書き方がちょっと違うだけで、結局VLOOKUPを2回行っていることには変わりはありません。
したがって、処理速度の違いはほとんどありません(感知出来ません)。
また、ファイルの重さ(容量)については、もちろん入力する数式が短いほど軽いでしょうが、今回程度の違いではほとんど差はないと思います。
何十のシートの何万行×数百列のセルに数式を書いたりしていない限り。
(実際には確認してませんが。)
    • good
    • 0
この回答へのお礼

ありがとうございます。
自分的にはこんなにたくさんの数式。。と心配してみたのですが、、お聞きできて安心しました。
また何かありましたら、よろしくお願いします。

お礼日時:2005/06/24 15:47

こんなのでも、できそうですけど、



=VLOOKUP(A1,名簿!N:Q,3+(VLOOKUP(A1,名簿!N:P,3,FALSE)=""),FALSE)

真ん中の (VLOOKUP(A1,名簿!N:P,3,FALSE)="") がTRUEなら1を、
FALSEなら0を返すことを利用しています。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
上記の数式で希望通りの結果でした。
またよろしくお願いします。

お礼日時:2005/06/23 21:49

こんにちは。

maruru01です。

No.1の方の回答をちょっと変えただけですが。

=VLOOKUP(A1,名簿!N:Q,4-SIGN(LEN(VLOOKUP(A1,名簿!N:Q,3,FALSE))),FALSE)

数式が短いことと、簡潔(簡単)であるということは、必ずしも一致しません。
この場合も、私やNo.1の方の回答は確かに短いですが、ある意味難しくなっていると言えます。

この回答への補足

ご回答ありがとうございます。
上記の式で希望通りの結果でした。

> 数式が短いことと、簡潔(簡単)であるということは、必ずしも一致しません。
> この場合も、私やNo.1の方の回答は確かに短いですが、ある意味難しくなっていると言えます。

すみません初心者な質問なのですが、
式の違いで、ブック自体の重さが変わるとか、処理速度に違いが出るということはあるのでしょうか?(数式をほかにも使っていて、IFの式も150箇所くらい入れてます)
もしそうだとしたら、どちらの数式を使ったほうが、より負荷のかかりにくいものになるのでしょうか?

補足日時:2005/06/23 21:33
    • good
    • 0

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