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

エクセル初心者ですので用語を正しく使えていないかもしれませんが、よろしくお願いします。

食品を選んで摂取量を入力したら、自動でカロリー等の栄養素を計算して表示されるようにしたいです。

データの入力規則を利用して別シートから参照して食品のドロップダウンリストを作成することはできました。
次に、vlookup関数を利用して、ドロップダウンリストから選んだ食品を選んだらカロリーなどの栄養の値が表示されるようになりました。
=vlookup(A2,Sheet2!A2:G10,2,false)
ただ、値を摂取量によって自動で計算できるようにしたかったため、参照元のセルに
=50/100*(indirect(address(row(),column()-1)))
の計算式を入れましたところ、#VALUE!と出てしまいます。
100g当たり50kcalの食品で、左隣のセルに摂取量(g)を入力したら自動で計算されるようにしたかったのです。
カロリーの他にもタンパク質、脂質、炭水化物、ビタミン類などをリストから選んで摂取量を入力したら対応して計算できるようにしたいです。
vlookup関数では値のみで、数式は反映されないのでしょうか。

他にもっと良い方法がありましたら教えてほしいです。

質問者からの補足コメント

  • 説明が下手ですいません。

    はい、すぐ左のセルの値に50/100を掛けるつもりで書きました。
    (indirect(address(row(),column()-1)))
    と書いた理由は、例えばA5と指定した場合、ドロップボックスで7行目にその食品を選んだらA7の掛け算をしたいのにA5の値で掛け算されてしまうと思ったからです。

    左隣のセルは確保していますし、数値を書いても#VALUE!のままなのです……。

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/03/19 01:27
  • 回答ありがとうございます。説明が下手ですいません。
    なんといえばいいのでしょう、
    検索値、参照値を含む範囲、戻り値を含む範囲内の列番号 で指定したセルの中を関数にした、という説明でよいでしょうか。
    数式が書かれているセルの左の値は数字になっています。

    No.2の回答に寄せられた補足コメントです。 補足日時:2023/03/19 01:33

A 回答 (6件)

私だったら、面倒くさいからVBAで書き始めるようなことをセル関数だけで、ここまで出来るんだと感心しました。


手っ取り早いのは、セルを一列余分に作って、関数の持つ値を仮置きしたら出来そうな気がします。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
妥協の産物ができましたがなんとか解決できました。

お礼日時:2023/03/25 22:26

それと、左隣のセルは直接データを入力しているのでしょうか?


それとも式を使っているとか他からコピペなどしてきているということはないでしょうか?
もし、式ならその式も書いてください。
コピペならそのデータをここに貼り付けてください。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
妥協の産物ができましたがなんとか解決できました。

お礼日時:2023/03/25 22:25

一応確認なんですが、左隣のセルに単位(gとか)を含めて入力している訳ではないんですよね?



できれば実際のデータなどを書き出してもらいたいんですが。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
妥協の産物ですがなんとか解決できました。

お礼日時:2023/03/25 22:26

実際のスクリーンショット等を補足投稿することはできますか?


その方が解決に近づきやすいと思うのですが。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
妥協の産物ができましたがなんとか解決できました。

お礼日時:2023/03/25 22:26

参照元のセル、とはどこのこと?



VLOOKUPの説明としては
=VLOOKUP(検索値、参照値を含む範囲、戻り値を含む範囲内の列番号、近似一致 (TRUE) または完全一致 (FALSE))
となってて、参照元という言葉は使われないし、どこのことかな、と。

=50/100*(indirect(address(row(),column()-1)))
この式は、
=50/100 × [この数式が書かれいるセルの左のセルの値]
なわけですが、[この数式が書かれいるセルの左のセルの値]が数字になってますか?
この回答への補足あり
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
妥協の産物ができましたがなんとか解決できました。

お礼日時:2023/03/25 22:26

> vlookup関数では値のみで、数式は反映されないのでしょうか。


そんなことありません。

> =50/100*(indirect(address(row(),column()-1)))
は、これを入力したセルのすぐ左のセルの値に50/100を掛ける言うことですが、認識あっていますか?普通は、=50/100*左セル (例えば =50/100*A5)とかと書きます。

> =50/100*(indirect(address(row(),column()-1)))
をA列に書いたか(この場合はadress関数のエラー)、この左のセルが数値じゃ無いか(この場合は50/100とのかけ算のエラー)。
この回答への補足あり
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
妥協の産物ができましたがなんとか解決できました。

お礼日時:2023/03/25 22:26

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