

No.4ベストアンサー
- 回答日時:
#3です。
5つの計算式にそれぞれ1~5の番号をつけ、
別のシートの一覧表に、材料ごとに使用するする計算のタイプを番号で入力しておいて、
VLOOKUPで【数量】・【単価】・【計算タイプの番号】が返るようします。
以下、数量・単価・計算タイプを返す数式をそれぞれ【数量】,【単価】,【タイプ】と表記します。
また、【タイプ】は、紙のとき1,ロープのとき2,木材のとき3が返るようにしたとします。
=CHOOSE(【タイプ】,B1*C1*【単価】*【数量】,(B1*【単価】+10)*【数量】,B1*7*3/1000*【単価】*【数量】,【タイプ4の計算式】,【タイプ5の計算式】)
こんな感じにしておけば、
紙のときは、B1*C1*【単価】*【数量】
ロープのときは、(B1*【単価】+10)*【数量】
木材のときは、B1*7*3/1000*【単価】*【数量】
で計算されます。
deus_ex_machina さん 回答ありがとうございました。
やりたかったことが完全解決できました。
少しむずかしく考えすぎていたようです。
choose関数はあまり使ったことがなかったですが
今後は覚えたことを応用させていきたいと思います。

No.3
- 回答日時:
・計算式がどのように変化するのか
(計算に使う値が違うのか、計算のやり方が違うのか)
・材料の種類がどの程度あるのか
によって話が違ってきます。
計算式の定数や係数部分が材料によって違うということであれば、VLOOKUP等を使って別表から引くことになります。
計算式の構造自体が材料によって違う場合、材料の種類が30未満であれば
下記のようにIFの代わりにCHOOSEを使って振り分けることもできます。
=CHOOSE(MATCH(A1,{"材料1","材料2","材料3","材料4","材料5","材料6","材料7","材料8","材料9"},0),数式1,数式2,数式3,数式4,数式5,数式6,数式7,数式8,数式9)
No.2
- 回答日時:
関数式のタイプぐらいを書かないと、質問になりません。
よう書かないならこんな質問コーナーに質問すべきではありません。
関数式の引数はセル番地が多いのですが、そのどの部分で変化し、
その中身は業務的に何なのか書かないと。
あるいは関数式のタイプなどが全然別の場合は、必ず1式にまとめられるという証明も、絶対できないと否定もできないでしょう。
ーー
それ(式のタイプ)が書けない(できない)なら文章で
(文章1)*(文章2)
とか
A列の会社名で決まる単価*数量(数量により単価など決まる)
とか、文章でかけないですか。
得意先ごとに品物ごとに割引率が違うという2次元ぐらいまでで
それ以上は、データベースを精緻に作るより他ないでしょう。
プロに任せる世界です。
ーー
何やかや言っているが、VLOOKUP関数(TRUE型やFALSE型)で済むような問題でないかと思いますが。
ーー
ほんとに材料により、ガラリと計算式が違う場合は、個別に考えざるを得ないでしょう。
ーー
>材料の種類によって計算式が違うため
表面的には違うのは違うが、見るセルが違う、とういう型ではないですか。
この点(型)に持っていくのが、エクセル関数でもプログラムでも、一番大事なスキルです。
この回答への補足
ご回答いただきありがとうございます。
ご指摘の通り、内容が不十分でわかりにくかった点大変申し訳ありませんでした。お詫びいたします。
補足説明させていただきます。
A列 B列 C列 D列 E列 F列
1行目 紙 50 20 1
2行目 ロープ 3 2
省略
50行目 木材 40 1
A1:A50の一つ一つのセルにリストが設定してあり、
30種類の中から選択できるようになっています。
B列~D列は使用量を入力します。
(1行目で言うとB1→50cm C1→20cm)
B列~D列が入力されるのはB列だけだったりB~D列全部使ったりです。
(数値を入れるセルを3つ用意いている)
E列は数量です。
B列~D列の数値を元に下記のような計算をして、F列に各行毎の計算結果が出るようにしたいのです。
紙=B1×C1×単価×数量
ロープ=((B1×単価)+10)×数量
木材=B50×7×3÷1000×数量×単価
(ロープの"10"、木材の7×3÷1000は固定です。)
リストで材料を選択するたびに計算式を変えていくことができるのかわからなかったので質問させていただいた次第です。
なお、材料の種類は30より増える可能性があります。
(別のシートに一覧表があります。)
また、式は上記の他2つあり、合計5種類あります。
実際にはこの計算シートをそのままアウトプットして提出するため、
現状は電卓で計算した結果を転記して使ってます。
この補足説明で大丈夫か自信ありませんが、よろしくおねがいいたします。
No.1
- 回答日時:
条件が見えないので具体的な回答ができませんが、
VBAによるユーザ定義関数をセルから呼び出せます。
セルの式=UserFnc(値,値)
ユーザ定義関数は、標準モジュールに以下の様に記述します。
Public Function userfnc(argA, argB) As Double
If argA < 100 Then
userfnc = argA * argB
ElseIf argB < 200 Then
userfnc = argA * argB + 10
ElseIf 条件 Then
式
End If
End Function
※ argA,argBなどの引数や、IF条件、式をいくつでも記述できます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
経常利益増加率⇒マイナス÷マイ...
-
時間単位の書き方について教え...
-
売り上げの15パーセントを渡さ...
-
Diluted EPS
-
建築用語?
-
鉄板の耐過重
-
尺効率の計算方法、計算公式、...
-
2時間45分の勤務がなんで2.75時...
-
縮尺60分の1の設計図を600分の1...
-
350平方って土地でゆうと何坪
-
エネルギー管理士の有効数字に...
-
残業時間を計算し且つ足りない...
-
IRRがマイナスになるとは?また...
-
体積から重量の計算方法
-
円錐(えんすい)の展開図の計...
-
4級基準点測量の厳密網平均計算
-
有効採光面積は窓のどこから計...
-
レースタイムの管理と計算
-
10進数の分数 1/32 を16進数の...
-
ウエイト平均
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
時間単位の書き方について教え...
-
経常利益増加率⇒マイナス÷マイ...
-
建築用語?
-
鉄板の耐過重
-
レンタルの料金設定について
-
縮尺60分の1の設計図を600分の1...
-
2時間45分の勤務がなんで2.75時...
-
売り上げの15パーセントを渡さ...
-
暦月の1ヶ月
-
40点満点を100点に換算する場合...
-
IRRがマイナスになるとは?また...
-
H鋼 吊治具 強度計算
-
レシピに書かれた人数分以上に...
-
20%減少の計算教えてください。
-
残業時間を計算し且つ足りない...
-
公共建築工事共通費積算基準(...
-
有効採光面積は窓のどこから計...
-
「N/W」の意味を教えてください...
-
関数電卓を使って角度を計算す...
-
明けましておめでとうございま...
おすすめ情報