[[20190220134715]] 『構造化参照がうまく作動しない』(kakiko) ページの最後に飛ぶ

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

 

『構造化参照がうまく作動しない』(kakiko)

はじめまして。

表を作成し、「テーブルとして書式設定」をしたあと、
そのテーブル内で構造化参照をして値を求めています。

=ROUND(([@A]-シート2[@B]-シート2[@C])*(1+[@D]),0)

上記の数式を用いて、値を求めたいです。
(なお、A〜Dとシート名は便宜的につけています。実際の名前とは違います。)

この数式を用いたところ、1〜6行目までは♯VALUE!エラーになりますが、
7行目以降は正しく計算結果が表示されます。

全く同じ数式なのに、なぜ一部の箇所で、♯VALUE!になってしまうかが分かりません。
自分でもいろいろと調べ、下記を試してみました。
?@表示形式が文字列になっていないか→すべて「標準」。「数値」にしても変化なし
?Aブックの計算方法が手動になっていないか→自動になっていました。
?B空白セルに余計なスペースが入力されていないか→なし。念のためDeleteしましたが、変化なし

参照となるセルが空白だからいけないのかと「0」など入力してみましたが、♯VALUE!のままです。
また、エラーの表示がされない箇所は参照セルが空白でも「0」でも計算結果が表示されています。

なぜ一部の部分だけエラーになってしまい、うまく作動しないのか全くわかりません。
ご教授いただけますと幸甚です。
よろしくお願いいたします。

< 使用 Excel:Excel2013、使用 OS:Windows10 >


追記です。

一部書き直します。
1.表示形式が文字列になっていないか→すべて「標準」。「数値」にしても変化なし
2.ブックの計算方法が手動になっていないか→自動になっていました。
3.空白セルに余計なスペースが入力されていないか→なし。念のためDeleteしましたが、変化なし

ちなみに、数式のROUNDを外して

=([@A]-シート2[@B]-シート2[@C])*(1+[@D])


=[@A]-シート2[@B]-シート2[@C]

にしてもエラーが出ました。

よろしくお願いします。
(kakiko) 2019/02/20(水) 14:07


 構造化参照ではなくセル番地参照に直した場合はどうなるだろうか?
(ねむねむ) 2019/02/20(水) 14:26

>ねむねむさん
早速ありがとうございます。
セル番地参照に直した場合は、求めたい値が正しく表示されました。

しかし、データベース(シート2)通りの順番でこのシートを運用しているわけではなく、
注文が来たものをデータベースから引っ張ってきて、必要な数量を出したいのです。
この場合、セル番地参照にしたままですと、単純なオートフィルではカバーできず、
数式等がわかりにくくなると思い、構造化参照を選択しました。

勉強不足のためご教授頂きたいのですが、セル番地参照でも混乱しないよい方法があるのでしょうか?

よろしくお願いします。
(kakiko) 2019/02/20(水) 15:15


 これってテーブルが二つあるということだろうか?
 もし、そうであればそのテーブルはそれぞれどこにあるのだろうか?
 もし、Aテーブルが(見出し含めずに)2行目から5行目、Bテーブルが4行目から7行目だとすると、行が共通する4行目から
 5行名以外の行では♯VALUE!になる。
(ねむねむ) 2019/02/20(水) 15:38

テーブルが二つあるということです。
シートが二つあり、それぞれに1つテーブルがあります。

おっしゃる通り、Aテーブル(データベースとして使用)は、見出し含めずに10行目から86行目まであり、
Bテーブルは4行目から150行目までありました。

Aテーブルにあわせて、Bテーブルを10行目から開始させると、♯VALUE!がなくなりました!
ただ、Aテーブルが86行目までしかないので、Bテーブルの87行目以降は再び♯VALUE!となりました。
2つのテーブルから構造化参照を使用する際は、共通した行数・列数が必要ということでしょうか。
Bテーブルは、注文がきたらその都度入力していくので、同じ商品でも複数行使うことがあり、
必然的にAテーブルよりも行数が多くなってしまいます。
このようなケースでは構造化参照は適さないのでしょうか?
他に何か良い方法があるのでしょうか?
大変お恥ずかしい限りですが、ご教授よろしくお願いいたします。
(kakiko) 2019/02/20(水) 16:26


 どのような計算を行いたいのか説明してくれないか?
(ねむねむ) 2019/02/20(水) 16:41

説明不足失礼しました。

Aテーブルには、在庫数等を入れています。
在庫数1、在庫数2、総在庫数(在庫数1〜2の合計)とします。

知りたいのは、注文数をもとにした目標加工数です。

=(注文数-在庫数1-在庫数2)*(1+NG率(%))

例)商品A 在庫数1:500 在庫数2:1000 NG率:1% 注文数:3000
=(3000-500-1000)*(1+5%)
=1575(目標加工数)

よろしくお願いします。
(kakiko) 2019/02/20(水) 17:07


 Aテーブルに商品名などはあるのだろうか?
 VLOOKUP関数などで商品名で在庫数を引っ張ってきてはどうか?
(ねむねむ) 2019/02/21(木) 15:48

VLOOKUP関数を試してみたところ、うまいこといきました。
当初もVLOOKUP関数でいこうと思っていたのですが、
VLOOKUP関数は左端列しか基準にできないので、そうすると何個も名前の定義付けをするのが面倒、と楽さをとって構造化参照にしていました。
アドバイス頂いて改めて、名前の定義をし、VLOOKUP関数で在庫数を引っ張るとエラー値になることがありませんでした。

臨機応変な使い方を学んでいきたいと思います。

ねむねむさん、ありがとうございました!
(kakiko) 2019/02/22(金) 12:32


 検索列が左端にない場合はINDEX関数とMATCH関数を組み合わせて引っ張ることもできる。
 =INDEX(目的値列,MATCH(検索値,検索値列,0))
 のように。
(ねむねむ) 2019/02/22(金) 12:39

ねむねむさん、重ね重ねありがとうございます!
INDEX関数とMATCH関数の組み合わせ、とても便利そうです!
(kakiko) 2019/02/25(月) 15:22

コメント返信:

[ 一覧(最新更新順) ]


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