• 締切済み

[EXCEL]LOOKUP関数の戻り値とセルの書式の関係

現在(たぶん同じ理由で)2点ほど困っていることがあります。 以下のようにLOOKUP関数を使ってセルに値をセットしています。 <Sheet1のレイアウト> |A列|B列  |C列 |-|----|---- |a |あああ |・・・ |b |いいい |・・・ |c |    | |d |かかか |・・・ <Sheet2のレイアウト> |A列|B列                 |C列 |--|-------------------|- |a | =LOOKUP(A1,Sheet1!A:A,Sheet1!B:B) | |b | =LOOKUP(A2,Sheet1!A:A,Sheet1!B:B) | |c | =LOOKUP(A3,Sheet1!A:A,Sheet1!B:B) | まず1つめです。 今まで、Sheet1は別ブックのマクロで出力された値を[コピー]→[形式を選択してはりつけ]→[値]ではりつけていました。このときはSheet2のB3のセルにはブランクが入っていたのですが、誤ってSheet1のセルに直接値を入力したり、[F2キー]→[Enter]をしてしまったためSheet2のB3のセルにはブランクをセットしたいのに0(ゼロ)が入るようになってしまいました。 B3のセルにブランクがセットされるように戻したいのですがどうしたらよいでしょうか? 次に2つめは、 Sheet2は他の列もB列と同様の式によって値がセットされていますが、列によって右詰で表示されたり中央揃えで表示されています。 Sheet1、Sheet2ともにすべて書式は「文字列」で、 Sheet2には「右詰」「左詰」などの書式は設定されていません。これはなぜでしょうか? 1つめは、IF文でLOOKUP関数の戻り値が0だったらブランクをセットするなどに式を変更すれば解決するとは思いますが、このような式が至るところで使ってありますので式を変更するにも時間がかかるため、また今後のためにも原因と対策をしりたいと思います。どなたかわかる方がいらっしゃいましたら回答よろしくお願いします。

みんなの回答

  • miwaki
  • ベストアンサー率36% (14/38)
回答No.5

#4訂正 D列かE列かどこか空いている列の1行目のセルに次の関数を入れます。 =IF(LEN(B1)=0,"",B1)

  • miwaki
  • ベストアンサー率36% (14/38)
回答No.4

#3のお礼欄の記事にお答えします。 D列かE列かどこか空いている列に次の関数を入れます。 =IF(LEN(B1)=0,"",B1) そして、これをコピーしてデータのある限り下のセルに貼り付けます。その後この列を選択してコピーし、B列に「形式を選択して貼り付け」で値を選択して貼り付けてください。すると空白のセルがすべて""となり、参照したときに空白になります。

usa_usako
質問者

お礼

回答ありがとうございます。 なるほど!と納得しました。私はセルの書式設定をすることばかり考えていて知恵がそこまで回りませんでした。 この方法で問題は解決されました!!とても困っていたので助かりました。

  • miwaki
  • ベストアンサー率36% (14/38)
回答No.3

シート1のB列が、どういう方式で入力されたかわからないので、自信がありませんが、一般的に見かけ上空白でも ="" とした場合の空白と当該セルを選んで 「数値と値のクリア」としたときの空白とはまるで違います。 前者の場合、参照結果も空白になりますが、後者の場合は、0となります。 元は参照結果が空白だったのにいつの間にか0になったというのはこの辺りの変化があったものと考えられませんか。

usa_usako
質問者

お礼

回答ありがとうございます。 言われる通りSheet1のB列のセルに文字を直接入力したので見かけ上空白でも「0」の意味になってしまったのだと思います。それを=""とした場合の空白に戻したいのですが。。。

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

1つめ ブランクのセルの参照すると0を返します。 参照するセルにスペースを入力するか =IF(LOOKUP()="","",LOOKUP()) のようにしてブランクにしてください。 #1の方の方法で0を非表示も一つの方法です。 表示書式で行う場合は、ユーザー定義で #,##0_ ;[赤]-#,##0_ ;"";@ のようになります。 2つめ 右と中央ですか?確かに数値は標準が右詰めですが、配置で変更できます。 どちらかというとセルの配置が揃ってないのだと思いますが? 念のため、書式の配置を設定してみてください。 上記以外だと参照元のデータにスペース等余分なものがありませんか?

usa_usako
質問者

お礼

回答ありがとうございます。 1つめは式を変えることなくブランクを返すようにしたいのです。参照元のSheet1に直接入力したらブランクが返っていたのがゼロが返るようになってしまった根本的な原因の解決にはならないので、直接入力する前のSheet1の状態に戻したいのです。説明不足で申し訳ございません。 2つめは#1の方にも書かせていただきましたが、私の勘違いで書式設定をし直したら解決いたしました。ありがとうございました。

  • miwaki
  • ベストアンサー率36% (14/38)
回答No.1

1つめ ツール>オプション>表示で中央下にある「ゼロ値」のチェックマークをはずせば、0が表示されなくなります。 2つめ この説明ではその原因の特定はできませんが、書式を再設定すれば揃うのではないでしょうか。

usa_usako
質問者

お礼

回答ありがとうございます。 1つめの ツール>オプション>表示・・・はゼロが見えなくなるだけで、実際にはセルにゼロが入ってしまっています。 このEXCELの値を更にマクロで取得し別システムに登録しているので、他の列で同じ式を使っていてゼロが入ってないといけない所、ゼロが入っていると都合が悪いところがあるのです。説明不足で申し訳ございません。 2つめは同じ書式を設定しているセルをコピーしても解決しなかったので、Sheet2は書式設定されていないと思っていましたが私の勘違いでした。 こちらは解決しました。ありがとうございました。

関連するQ&A

  • LOOKUP関数について

    現在、次のようなエクセルのシートを作成中ですが、どうしても、上手くいかないものですから教えていただけませんでしょうか。    A    B    C    D 1 7日間  0.7  7日間  0.1 2          15日間  0.2 3          1ヶ月間  0.3 4 2ヶ月間 0.4 5          3ヶ月間  0.5 6          4ヶ月間 0.6 7          7ヶ月間 0.7 上記のシートを作成しているのですが、A1のセルに7日間と打ち込めばLOOKUP関数にて0.1とB1に出力させたいのですがどうしても、7ヶ月間の0.7が出力されるなど、上手く拾ってきてくれないのですが、関数式について教えてください。 ちなみに  =LOOKUP(A1,C1:C7,D1:D7) といった数式を入れてみております。Cの欄などは文字列に設定してみたりもしております。  

  • ExcelでLOOKUP関数がうまくいきません

    EXCELでシート間でLOOKUP関数を使って「Sheet1」に関数を入れ、 コード(C5のセル)にコードを入れたら、「Sheet2」からデータを 持ってくるというようにしたいのですが、うまくいきません。 コードに「300」といれても「003」と入れても同じものをひっぱてきます。 【A列に入れた式です】    (コード)      (A列) =IF(C5="","",LOOKUP(C5,Sheet2!$B$5:$B$20,Sheet2!$C$5:$C$20)) 【Sheet1】 コード   A     B      C      D 001   △△市  △△区  △△丁目   520   ◇◇市  ◇◇区  ◇◇丁目  ◇◇ 300   □□市  □□区  □□丁目 003   □□市  □□区  □□丁目 【Sheet2】 コード   A     B      C      D 300   ○○市 001   △△市  △△区  △△丁目 003   □□市  □□区  □□丁目 520   ◇◇市  ◇◇区  ◇◇丁目  ◇◇ あまりうまく説明できませんが、よろしくお願いします。

  • 関数が入っている列で値のある最後のセルの値を返す

    お尋ねします。 関数が入っている列で式の値が入っている一番下のセルの値を調べるにはどうしたら良いでしょうか? 例      A列   1   5   2   10   3   13   4   (式の値が無いのでゼロ) B1セルにA3セルの13と言う値を返したいのですが、列に式(SUMPRODUCT関数)が入っていて、実際はA4セルのゼロが返ってきます。 またシート1~シート5 まで上記と同じ式が入っていて、シート1のA列の最後の値「13」をシート6のB1セルに値を返す場合、INDIRECT関数を使った場合、どういう式になるでしょうか? ご回答よろしくお願いします。

  • IF関数とLOOKUP関数の組み合わせについて

    指定したセルと等しい数値(文字列?)をLOOKUP関数を使って別シートのデータベースを検索させて、そのシートに無ければまた別のシートのデータベースを検索させるものを作りたいのですが上手くいきません。 指定したセルが空白なら空白を返すように次のような感じで作っています。 IF(A1="","",IF(LOOKUP(A1,シート1!A1:A15,A1:A15)<>A1,LOOKUP(A1,シート2!A1:A15,B1:B15),LOOKUP(A1,シート1!A1:A15,B1:B15))) VLOOKUP関数でもやってみたのですがこちらも上手くいきません。 IF(A1="","",IF(LOOKUP(A1,シート1!A1:A15,A1:A15)<>A1,VLOOKUP(A1,シート2!A1:B15,2,0),VLOOKUP(A1,シート1!A1:B15,2,0))) ご指摘いただければ嬉しいです。

  • EXCEL関数について

    EXCEL関数について Sheet1、A1~A1000セルに「1~10」までの値がランダムに入力されております。 数字は「グループ1」、「グループ2」・・・という意味です。 B列、B1~B1000セルには「1~4」までの値がランダム入力されております。 B列については、空白のセルもあります。 Sheet2、A1~A10セルに、「1~10」までの値、「グループ1」~「グループ10」までが順に入力されております。 ここで、Sheet2、B列~E列、それぞれの1~10セルを使用し、、 それぞれの「グループ」がSheet1にて「1~4」の値をいくつずつ選んでいるか算出したいのです。 「グループ1」について、「1」のカウントはB1セル、「2」のカウントはC1のセルに返します。 同じように「グループ2」はB2~E2のセルに、「グループ3」はB3~E3のセルに値を返したいのです。 「COUNTIF」等の関数でいろいろと試してみたのですがうまく反映されません。 拙文乱文、大変恐縮ですが、ご教示頂きたく何卒宜しくお願い致します。

  • エクセル Excel 関数or条件付き書式

    あけましておめでとうございます(*^_^*) 新年早々教えてください! セルに指定された値(文字列)を入力すれば 自動で別のシートの別のセルの書式が変更される (あるいは関数により自動で値が入力される) 方法を探しています! エクセルマスターの方お願いします! 【具体的に…】 シート1の セルA1に  指定された文字列(例-ねずみ)を 入力すれば    ↓ シート2の セルC10の 書式が 自動変更される(例-フォントが赤になる) もしくは 【具体的に…(2)】 シート1の セルA1に  指定された文字列(例-ねずみ)を 入力すれば    ↓ シート2の セルC10に 指定された値(例-厄年)が 自動入力される そんな方法を教えてください! どちらもできれば最高です!!

  • EXCELの関数探してます、lookupのような

    A列に1,10,20,30とありB列に200,300,400,500とある場合を想定します LOOKUP関数を使い、1のときは200、10の時300,20の時400のように値を出したいとします。つまり横の値。 LOOKUP関数を使うと2,3,4,5,6,7,8や11,12,13~19などの検査値で不完全一致の場合の値を出すとき、 2,3,4,5,6,7,8のときは1の値の200がでて、11,12,13~19の時は10の値の300が出ますよね ようはその値より上の値の数字をだしてくれるんです。14なら300,26なら400,39なら500のように 質問は下の値を出してくれるLOOKUPのようなものはありませんか?14なら400,26なら500のような

  • vlookupの結果があるセルの書式を取得したい

    vlookupの結果があるセルの書式を取得したい =VLOOKUP(検索値,範囲,列番号,検索の型)で値を取ってくることは 出来ますが、その値の入っているセルの書式を取得したい。 Sheet1の セルA1に、検索したい値が入っていて、 セルB2にVLOOKUP関数が入り。 範囲はSheet2のA1:D1000となっていて、 列番号に4と入っていて10行目に 検索値と一致する値が入っていた場合に、D10の値は VLOOKUP関数で持ってこれますが、D10のセル書式を セルB2に反映させたいのですが、どのようにすれば良いでしょうか? VBAでプログラムしないとダメでしょうか?

  • Excel関数について(lookupなど)

    A列とB列にそれぞれ商品コード(A列)、数値(B列)が入っているリストがあります。(コードと数値はそれぞれ関係があり、このコードにはこの数値、というルールがある) 1)セルD4にそのコードが入ったら、セルE10に該当する数値が入るようにしたいんです。 2)但し、セルD4に入るコードは、リストにはないコードも存在する。その場合、セルE10には何も表示させたくない(エラーも非表示にしたい) という場合、どういう関数を使えばいいのでしょうか。 1)まではLOOKUPかVLOOKUPでできるようなのですが、2)の場合の表示がうまくいきません。 説明が下手で申し訳ないのですが、どなたかお分かりになるかた教えてください。

  • Excelにて複数条件を満たす行の特定のセルの値を返す関数

    Excelにて複数条件を満たす行の特定のセルの値を返す関数を作りたいのですが、上手く行きません。 <Sheet1>   A列  B列  C列 1 2008/6/1 ★  320 2 2008/6/1 ☆  300 : : : Sheet2のA1に、「A列が2008/6/1で、B列が☆の場合、C列の値を返す」という関数を入れたいのですが、どうも上手く行きません。 良い式がありましたら教えて下さいm(_ _)m

専門家に質問してみよう