[[20081124103856]] 『Offset関数について教えてください』(June) ページの最後に飛ぶ

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

 

『Offset関数について教えてください』(June)

 =OFFSET(Sheet1!A2,3,4)という式でSheet1から転記する帳票を作成しております。
 OFFSET関数は基準となるセルが空白の時は「0」を返すという事のようですが、
 基準セルが空白のとき転記されるセルも空白にする方法はありますでしょうか。
 よろしくお願いいたします。
 
 (June)

 それと全く同じ式をどこかのセルに入力し
 フィルドラッグしているのなら
 OFFSET関数を使う必要はないように思いますが・・・。

 実際はもっと複雑な式で参照しているのですかね?

 IF関数で分岐する方法があると思います。
=IF(戻り値="","",戻り値)

 (HANA)

 (HANA)様、ありがとうございます。

 実際は「=OFFSET(Sheet1!$A$1,$B$3,4)」のようにしました。帳票シートにおいて
 $B$3セルに入力された値により任意のレコードに移動できるようにしています。
 空白の解消の件ですが、例えば住所録の項目でメールアドレスを持たない人はその
 項目を空白にしますが、このままの式では、「0」が返ってしまいます。これを解
 消したいと思っています。

 ご回答いただいたIF関数で分岐する方法を用いた場合でも帳票シートにおいて上記
 のような方法でレコードの移動が可能でしょうか。

 (June)


 メールアドレスのように戻り値が文字列であれば、
=OFFSET(Sheet1!$A$1,$B$3,4)&""

 でいけますよ。

 (川野鮎太郎)


 IF関数で分岐させるなら
=IF(OFFSET(Sheet1!$A$1,$B$3,4)="","",OFFSET(Sheet1!$A$1,$B$3,4))

 の様にしてもらえれば良いと思います。

 (HANA)


(川野鮎太郎)様、(HANA)様ありがとうございました。

 お二方の方法を実行させていただきました。どちらの方法でも見事に解決できました。
 とても助かります。心から感謝申し上げます。

 IF関数による方法は理解できましたが、川野様のご回答の「&""」を付けるとどうして
 「0」が表示されず空白となるのでしょうか。簡単なことなのかも知れませんが恥を
 忍んでお伺いいたします。お教えください。よろしくお願いいたします。

 (June)


 う〜ん(/-_-\)何ででしょうね〜。
 計算の戻り値は、通常参照先のセルで決まりますよね。
 エクセルは本来計算するソフトであるため、基本的には数値として扱うものとし、
 戻り値に0が返るようになっているのではないかと考えます。
 ただ、&でつなげば、計算式を入れたセルは文字列として扱われることになり、
 0が消えて、""になるのではないかと勝手に思います。
 本来なら0の文字列になるはずですが、そのような仕様だということで
 あまり深くは考えたことはありません(^_^A;

 (川野鮎太郎)


 私もこの理屈が知りたくて、かなり以前、別の掲示板で問題提起したことがありますが、
 納得の行く回答は得られませんでした。

 結局、「仕様」と云うしかないのですが、ただ、本意でそうしたかったのではなく、
 そうせざるを得ない何かがあったのではないかと思っています。
 恐らく、エクセルが開発された時代のPCのスペックとの兼ね合いで決定されたのではないかと推測しています。
 真相はマイクロソフトの開発者に聞くしかないと思います。
 いずれにしても、今となってはもう変更できないまでに既成事実化した仕様になっています。

 参考までにVBAのバリアント型Empty値の性質をヘルプから引用しておきます。非常に似ています。
  ↓
 >Empty 値は、初期化されていない (初期値が代入されていない) バリアント型の変数を示します。
 >Empty 値を含むバリアント型の変数は、数値データと共に使われるときは 0、
 >文字列データと共に使われるときは長さ 0 の文字列 ("") として扱われます。

  (半平太)

コメント返信:

[ 一覧(最新更新順) ]


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