• ベストアンサー

エクセルIF関数&選択肢ボックス 多数の条件があるときの解決策を教えてください

過去の質問を見直したのですが、どうも同じ事例をみつけることができなかったので質問させていただきました。なにぶん初心者ですのでよろしくお願いします。 当方の状況としましては経営するお店のレンタル商品の見積書を作成中です。 例.自転車は1日10円,車は1日50円  ・・・他に10種類程有り (質問)   A     B   C   D   E   F   G   H 1 項目   数量  単位  単価  小計  数量  単位  合計 2 自転車  1   台   10  10  2   日   20 3 車    1   台   50  50  3   日   150 という表を完成させたいのですが、(1)A列に入力する値はある程度決まった項目なので選択肢から選択できる状態にしたいのです。但し、都度可変できるようにもしたいです。(2)A列に入力された項目に応じてD列の単価に自動的に数値が表示されるようにしたいです。 どなた様かお力をお貸しください。よろしくお願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
  • vista2446
  • ベストアンサー率46% (131/279)
回答No.2

準備として、項目と単価を別シート(Sheet2など)に作ってしまいましょう。A列に「項目の読み」B列に「項目」C列に「単価」を1行目から入力し、B列全体を選択して「挿入」→「名前」→「定義」でA列に名前(今回は「項目」とします)を定義します。A列の入力済みのセル(どこでもよい)を選択して、「データ」の「並べ替え」から「昇順」で行を並べ替えておきます。 (1)見積書のA2セルに入力規則を設定します。 A2を選択し、「データ」→「入力規則」の設定を開き「入力値の種類」で「リスト」を選択。「元の値」に「=項目」と入力します。Sheet2で項目を増やしてもドロップダウンリストに反映されます。 (2)見積書D2セルにVLOOKUP関数を組み込みます。 D2セルを選択し「fx」ボタンからVLOOKUP関数ダイアログを表示させ、検索値に「PHONETIC(A2)」、範囲に「Sheet2!A:C」、列番号「3」を入力して「OK」をクリックします。これでA2セルに対応した単価がD2セルに自動入力されますが、A2が空白だと#N/Aが表示され見積書として使えませんので、IF関数にVLOOKUP関数をネスト(入れ子)します。 =IF(A2="","",VLOOKUP(PHONETIC(A2),Sheet2!A:C,3)) 項目が漢字だと正しく検索されない場合がありましたので、Sheet2で読み仮名の列を設け、VLOOKUP関数で、見積書のA列からPHONETIC関数によりフリガナを参照しています。 あとは、2行目を必要なだけ、下方へオートフィルでコピーしてください。

htenaaaaa
質問者

お礼

早々のご返答ありがとうございました。 リストという機能はぞんじませんでした。とても勉強になりました。 本当にありがとうございました。

その他の回答 (3)

noname#79209
noname#79209
回答No.4

答えは出ているようですが、僭越ながら補足を... > どうも同じ事例をみつけることができなかったので 結構あるとは思うのですが...多分レンタルの事例としてしか探さなかったのかと.. 予め選択肢を決めておくのは、他の方が言われているように「データ」-「入力規則」-「リスト」を選択すれば可能ですし、選択肢以外のデータ入力も可能です。 ただし、選択肢以外のデータを入れたときに、自動で選択肢リストに追加が出来ません。 又、VLOOKUPの検索元のセルへ自動的に追加(品名、単価ともに)も出来ません。 エクセルのワークシート関数は他のセルに何かをさせる事は出来ない仕様になっています。 VBAを使えばなんとか可能ですが...

htenaaaaa
質問者

お礼

早々のアドバイス本当にありがとうございました。 そうですね。今後はもっと過去の質問を熟読させていただきます。 また、VBAを利用するともっと出来る幅が広がるのですね。これからゆっくり勉強してゆきたいと思います。ありがとうございました。

  • vista2446
  • ベストアンサー率46% (131/279)
回答No.3

#2です。訂正があります。 【B列全体を選択して「挿入」→「名前」→「定義」でA列に名前(今回は「項目」とします)】の部分で『A列に名前』とありますが、正しくは『B列に名前』です。スイマセン。。。

回答No.1

別シートでも どこでもいいので 項目 と 単価を 打ち込んであるところが必要です。 わたしなら j列に項目 k列に単価を いれたとして D列にはいる 式は VLOOKUP(A2,$J$2:$K$7,2,0) として VLOOKUPを つかいますかねー。 A2 に入った項目のなかで J列と同じ物があれば その隣の単価すなわちK列を返す式でいいようなきがします。 ※ ちなみに A列にある程度きまった 項目のみの入力をしたいのであれば 入力規則をつかうと うち間違いのミス防止につながるかもしれません。 説明下手でスイマセン;

htenaaaaa
質問者

お礼

早々のご丁寧なアドバイス本当にありがとうございました。 VLOOKUPという関数を使うといいのですね。なるほど。 とても勉強になりました。本当にありがとうございました。

関連するQ&A

  • エクセルのIF関数をつかい=が0なら非表示とした場合の矛盾

    はじめまして。どうぞお力をおかしください。 [質問] エクセルで人材派遣の見積書を作成しています 項目は、 ・A-数量(派遣人数や勤務時間) ・B-単位(人や時間数) ・C-単価(1人や1時間あたりの単価) ・D-小計(1日分の合計) ・E-数量(勤務日数) ・F-単位(日) ・G-合計(ひとつの現場の人件費合計) ★EFGには何も入力しないこともあります となります。 現在以下のように入力しております。 (1)D=A×C→D=IF(A1*C1=0,"",A1*C1) (2)G=D×E→G=IF(D1*E1=0,"",D1*E1) しかし!!これではひとつめのDには希望通り何も入力されていないときには空白で数値がある場合のみ数値が計算されているのですが、EFGに何も入力していないとGには空白となり、Dの小計の金額が表示されないのです。 どうしたらEFG未入力の際にはDの数値が表示されるようになるのでしょうか?? どうかお助けください。お願いいたします

  • Excel VBA 「小計」と入力したら自動計算

    エクセルの小計の計算について質問いたします。    A列    B列      C列   D列     E列    F列 1 施設名  2      商品名,内容   1    単位     単価    金額(数量×単価) 3      商品名,内容   1    単位     単価    金額(数量×単価) 4                              小計     ●●●● ――――――――――――――――――――――――――――――――― 5 施設名 6      商品名,内容   1    単位     単価    金額(数量×単価) 7      商品名,内容   1    単位     単価    金額(数量×単価) 8      商品名,内容   1    単位     単価    金額(数量×単価) 9                              小計     ●●●● ―――――――――――――――――――――――――――――――――                                合計     ●●●● 施設名ごとに項目が複数あり、施設ごとに項目の数も違います。 これを施設ごとに●の所に小計を出したいです。 「小計」が数回にわたり出てくる場合は、「前回小計をした次のセルから今回小計するセルの前まで」を計算させる訳ですが、どんなVBAを組めばいいのかわかりません。 理想としてはにE列に小計という文字を入れるとF列に自動で計が出るようにして、さらに小計の合計を最後の行のセルにだしたいです。。 さらに、見やすくなるように小計の下のセルにA~Fの間に太線を引いて施設ごとの区切りがわかるようにしたいです。。 繰り返し作業ばかりで大変です。 どなたか知恵をお貸しください。

  • SUBTOTAL関数の不思議

    SUBTOTAL関数で期待する合計が出せません。 A列   B列   C列   D列 品名   数量   単価   金額 A     1    100    100 B     2    200    400 C     3    300    900 小計               0 →ここが期待どおりでない D2セルの式は =IF(A2="品名",SUBTOTAL(9,INDIRECT("D$2:D"&ROW()-1)),B2*C2) でD5までコピーしました。 つまりA列が"小計"でないときは数量×単価を、"小計"と入力されていたらD2:D4をSUBTOTALで集計するつもりなのに結果が0になってしまいます。 ちなみにD5に =SUBTOTAL(9,D2:D4) と手入力しても結果は0でしたが、D列に金額を直接入力すれば小計は正しく表示されます。 理由がおわかりの方、教えてくださいませんか

  • エクセル 関数の使い方

     A    B     C     D     E   F  G  H  … 取引先 売上単価 作業仕入@ 部材仕入@ 単位数 担当者 1月 2月… ABC   60    10      5    2   あ   2  1 DFG   55    15      7    3   さ   1  2  ↓以降データーがあります。 上記の表があった場合、各担当者別月別に売上高と仕入高と粗利額を算出したいのですが関数をどのように組めばいいでしょうか? 取引先ABCの1月で例えると 売上高=売上単価(60円)×1月数量(2台)=120円 仕入高=(作業仕入単価(10円)×1月数量(2台))+ (部材仕入単価(5円)×単位数(2個)×1月数量(2台))=40円 ※単位数は、1台の機械に対し部材をいくつ使うかの数量になります。  単位数がない場合もあります。

  • エクセル 関数の使い方について

     A    B     C     D     E   F  G  H  … 取引先 売上単価 作業仕入@ 部材仕入@ 単位数 担当者 1月 2月… ABC   60    10      5    2   あ   2  1 DFG   55    15      7    3   さ   1  2  ↓以降データーがあります。 上記の表があった場合、各担当者別月別に売上高と仕入高と粗利額を算出したいのですが関数をどのように組めばいいでしょうか? 担当者”あ”の1月で例えると 売上高=売上単価(60円)×1月数量(2台)=120円 仕入高=(作業仕入単価(10円)×1月数量(2台))+ (部材仕入単価(5円)×単位数(2個)×1月数量(2台))=40円 粗利額 120円-40円=80円 ※単位数は、1台の機械に対し部材をいくつ使うかの数量になります。  単位数がない場合もあります。 よろしくお願いします。

  • エクセルで注文書→請求書を作っていて困っています。

    下記のような注文書がSheet1にあります。 A列  B列 C列  D列 E列 品名  数量 単位 単価  小計 りんご 1  個  100 ¥100 みかん 0  個   30 ¥ 0 バナナ 2 本  100 ¥200 スイカ 2  個 200  ¥400 メロン 0 個  300 ¥ 0      合計 ¥700 上表のような顧客が数量を入力すれば小計が出るとこまでは出来ています。 Sheet2に注文のあった品目のみで請求書を生成したいのですが、 良い方法がありましたら教えていただけますでしょうか。 A列  B列  C列  D列  E列 品名  数量 単位  単価  小計 りんご 1  個   100 ¥100 バナナ 2 本   100 ¥200 スイカ 2  個 200  ¥400       合計 ¥700 ※要するに品名のラインナップがある中で0個のものは飛ばして  上図のような形に自動生成できるものが希望です。 色々な関数を試してみましたが、結果関数の意味も分からずやっているので、 なかなか思うようにできなくて困っています。 どうぞ、良い方法がありましたらご教示の程、よろしくお願いいたします。

  • Excelの関数が更新しない! 解決方法を教えてください。

    こんにちは!カテが違うかもしれませんが宜しくお願いします。 会社で作ったExcelの書式がうまく機能しなくなりました。 とても簡単な内容なのですが、数値を入力しても結果が更新されません。 原因が分からないので数式を再度入れなおすと結果が正常に返ってくるのです。 これは変だと思い、他の結果が返っていないセルで 「A10→A100(0を一つ増やす)→A10(増やした0を消去する)」 を一連の作業で行うと解が帰ってくるのです。数式自体は単純なものです。 下に例を書き出しておきます。 セルA1に>=IF(入力頁!A2="","",入力頁!A2)→商品名 セルB1に>=IF(入力頁!B2="","",入力頁!B2)→受注個数 セルC1に>=IF(単価頁!B2="","",単価頁!B2)→単価 セルD1に>=B1*C1→小計 セルE1に>=IF(A3="","",ROUNDDOWN(A3*0.05,0))→消費税計算 ※そして、小計の下方に集計するセルを設けて請求書としております。 ※商品内容が複雑で1ページに数式の含んだセルが300個程度あり、この頁がブック内に15ページ、データの頁(入力、単価など)が3ページ有ります。 OKwaveも見てみましたが私の症状とは微妙に違うようなので質問させていただきました。宜しくお願いします。

  • excel エクセルIF関数の作り方を教えて下さい

       A        B       C       D      E 1  発注納期  修正(1)   修正(2)     修正(3)    遅延日数    2  7/9      7/21     8/4               25 3  6/7       7/28     8/5       7/27     -1  4  6/22     7/28     8/7       8/9      47 <A列:発注納期)に対して、B・C・Dと修正し、<E列:遅延日数>を計算する式を E2=IF(B2="","",DAYS360(A2,MAX(B2:D2))) と入力していましたが、そうすると E3=58 となります。 列B~列Dのうち一番右側を選択して計算して、 E3=-1 とするためには、どのような式を作れば良いのか教えてください。

  • エクセル関数で教えてください。

    エクセルでB列には商品名(セルB1にみかんセルB2にみかんセルB3にみかんセルB4に柿セルB5に柿セルB6に柿、C列にはみかん柿の数量ランク(例:C1に1~、C2に10~、C3に100~と記入)、D列にはC列のランク毎の単価が表示されています。(D1に1000、D2に800、D3に500、D4に1500など) この表を、ほかのシートのA1にみかん、A2に柿と入力させて、B1に関数を入力してB1セル内で数量ランクの1~1000、10~800、100~500と横一列に表示させたいのですが可能でしょうか? どのような関数が適当でしょうか? このパソコンはエクセル使えず、添付できずわかりにくい説明で申し訳ないのですがどなたか教えてください。よろしくお願いいたします。

  • コンボボックスで選択実行後、次を選択

    いつもお世話になっていますm(__)m オフィス系で回答を得られなかったため あちらを削除してこちらに移動してきました。 アクセス2000で在庫管理・発注書フォームを作っているアクセス初心者です。 発注書フォーム内で サブフォームの発注明細に入力するため、 メインフォームで連動するコンボで、絞込みをしながら商品を選択 (大項目・中項目・小項目と3つのコンボで商品を絞込み)すると サブフォーム内のコンボボックスに小項目まで絞り込まれた商品数点が表示され、(4つめの絞込み) そこで選択すると、 見た目一行の状態で(1レコード)、 IDや単価などの詳細がそれぞれのテキストボックスに表示、 数量を選択するとこの商品の小計金額を表示するという形になっています。(意味が伝わるでしょうか。。?^^;) 最後の項目まで行き、enterキーを押すと 次の新規レコード(2行目)に移動するのですが そこで、大項目のコンボボックスから選択しようとすると 最初のレコード(1行目)に戻ってしまいます。 理想としては商品を選択し、数量など最終項目まで入力してenterキーを押すと、 次の行(次のレコード)に移動すると同時に メインフォームのコンボボックスが空白の状態になって また再度選択したものが2個目のレコードに反映される。。 という形にしたいのですが どうもうまくいきません。 説明がうまくできなくて恐縮ですが どなたかご教授のほどよろしくおねがいします。。

専門家に質問してみよう