『文字入力で数字を表示させたい』(ゆみ) 運賃計算をしています。 今現在、下記のように項目ごとに文字、数字を入力し顧客別に月の集計を出していますが,少しでも作業を楽にしたいのでご協力をお願いします。    A     B      C     1  日付   陸送区間   請求金額 2      関東〜大阪    1000 3      大阪〜福岡    1000 上記のように入力してくのですが、定期的に行く場所については運賃が決まってるため、 金額を打ち込むのも面倒になってきます。予め運賃表などを作成しておくなどして、入力の手間を省く方法はないものでしょうか?例えば、陸送区間を入力すれば自動的に請求金額に数字が入力されるとか・・・。 ---- こんにちは、 Aに運送区間 Bに運賃 の運賃表を作成し、運送区間を入力するセル(例えばC)にリストから選択できる様にします。(データ→入力規則→入力値の種類をリスト→元の値を=$A:$A) 運賃(例えばD)は、関数のVLOOKUPを使って、検索値を陸送区間(Cの行)とし、 範囲をAとBの行にし、列番号を「2」にします。 多分これで、少しは楽に入力が出来るのではと思いますよ。(Boo) --------------------------------- マクロはOKですか。 マクロで,自動的にB列の値を上から読んで,結果をC列に表示する ことはいとも簡単です。 実行(マクロ実行)する都度,最新で表示します。 マクロコードに 各B列の値に応じて,所定の数値を選択する よう仕組んでおきます。(SELECT case文かな) (なお) ------------ 作ってみました。(なお) 下記の要領で,料金データを追加すれば実用可能と思います。 Sub test() lastrow = Cells(Rows.Count, 2).End(xlUp).Row For i = 2 To lastrow Select Case Cells(i, 2) Case "関東〜大阪" Cells(i, 3) = 1000 Case "大阪〜福岡" Cells(i, 3) = 2000 Case "新潟〜大阪" Cells(i, 3) = 3000 Case Else Cells(i, 3) = "この区間の料金設定データがありません" End Select Next End Sub ------------------------------------------------------------------- (Boo)様 簡単な運賃表を作成してみました。 運賃表は同じブックの別のシートに作成したのですが、運賃計算をするシートに 作成した方が良いのでしょうか? また、運賃表をリストとして登録する作業が必要ですか? リスト表示をさせると何も出てこないもので・・・ 初めての事ばかりなので、ご指導ください。 (なお)様 私、マクロは初めてなのですが、もし面倒でなければ設定手順を教えていただけ ますか?宜しくお願い致します。 ---- 入力規則についてはこちらをどうぞ。 ライブラリ 簡易リストボックス http://www.excel.studio-kazu.jp/lib/e2k/e2k.html この下のほうに別シートにリストを作成する場合について記載がありますよ。 (ゆうり) ------- (ゆうり)様 ありがとうございます。是非、参考にさせていただきたいと思います。 リスト表示、選択後、金額を自動入力させる方法については、(Boo)様の方法を 適応すればOKでしょうか? ---- そういう時はやってみましょう! 出来なかったときはどのようにしてできなかったか書いていただけると 私でもお手伝いできることがあるかもしれませんので。 な〜んて偉そうにいいながら、ホントはあまり皆様の回答を拝見しておりません--; すみません・・・・ (ゆうり) ------ (ゆうり)様 ありがとうございます。では、後ほどご報告させていただきますので。 ---- ようやくよく読みました(^^) VLOOKUPについてですが、ゆみさんの場合は検索の型をFALSEとしたほうがよいと思います。 巧くいくといいですね。 (ゆうり) ------------------------------- マクロ(vba)の手順は,説明するより ここの学校の「ライブラリ」--「VBA」--「VBA体験 win」 をご覧になる方が早く,わかりやすいでしょう。 その解説のマクロコード(VBA)部分に本コードを コピーすれば,準備完了です。 処理したい場合に実行します。(なお) --------------------------------------------------------- (ゆうり)様 (なお)様 ありごとうございます。 参考に頑張ってみたいと思いますので、今後とも宜しくお願い致します。 お時間はかかってしまうと思いますが、必ず報告をさせていただきますので 気に留めていただければ幸いです。 --------------------------------------------------------------------- (ゆうり)様 FALSEについてですが、最初意味が解らなかったんですが、ここの「ライブラリ」 を拝見し、試してみたところ巧くいきました。 VLOOKUP,FALSEは、運賃表などの表を作ってからでないと出来ないということですね。 とりあえずは成功ということですかね。 それと、#N/Aが表示されますが、#N/Aがすでに縦横の計算式のあるセルに表示された 場 合、数字が合計のところまで入ってないと合計が表示されないんですが、対処法は ございますか? 他にも良い方法がありましたらご指導ください。 ありがとうございました。 (なお)様 せっかくご指導頂いておりますが、どうも巧くいきません。 大変お手数ではございますが、本コードの意味を単語別に教えていただけませんでしょうか? 宜しくお願い致します。 ---------------------------------- コードの意味はともかく マクロの記述と実行の操作はOKなのでしょうか。 このマクロに限らず,マクロコードを記述(コピーでもOK)して 実行させるまでのプロセス(操作)は失礼ですがわかていますでしょうか。 このことが出来ないと,自分でマクロを作って実行できません。 コードの内容は lastrowの行は,B列(区間)のデータが入っている末尾の行を 調べ,その行番号をlastrowに記録(記憶)します。 次に,各行の区間の内容(B列)を調べ,その区間名に応じて,数値(料金)を 選択(select case文)し,その値を同じ行のC列に記載します。 繰返して,末尾まで実行し,全てに記載して終了です。 このマクロは,区間を記載した後に自分で,マクロを実行して初めて,全ての 料金が記載されます。 追加する度に実行してもOKですが,その度に最初から処理をします。実際にはわずかな 時間で終了しますので,その都度,最初から調査しても不利益はありません。(なお) ----- 補足です。 cells(R,C) はR行,C列のセルの内容を現しています。 つまり セルのB3の内容であれば cells(3,2)になります。 したがって Select Case Cells(i, 2) Case "関東〜大阪" Cells(i, 3) = 1000 は セルのi番目のB列の値が"関東〜大阪"であれば セルのにi番目のC列に1000を書き込みます。 そして区間内容がなければ(case else) "この区間の料金設定データが ありません" と記述します。 それを,2行目から,末尾行まで繰返します。(for next 文) (なお) ----------------  (なお)様 お手数をおかけして誠に申し訳ありません。 ご丁寧なご説明のかいあって成功することができました。 本コードを参考にいろいろチェレンジしてみたいと思います。 本当にありがとうございました。 ---- 遅ればせながら・・解決おめでとうございます(^^) もうご覧にはなってないかもしれませんが、一応。 VLOOKUPは仰るとおり検索して値を返す関数ですので、そもそものリストが必要です。 #N/Aは有効なデータがない場合に出るエラー値ですので、 リスト内に検索値がないとこれが出てきてしまいます。 もし、ゆみさんがやりたいことが、多くの区間の中で、金額の決まった一部の区間の 場合のみ金額を表示したい、というのであれば、 なおさんが提示してくださったマクロを利用するほうが便利だと思います。 あんまりお役に立てず(^^; (ゆうり) ----- (ゆうり)様 気にかけて頂いてありがとうございます。 マクロを利用する場合でも、区間と料金は打ち込まなくてはなりませんよね? でしたら、どっちみちリストは作成しなければならないので、VLOOKUP、FALSE を利用することで十分だと思います。 あと、(さぶ)さんの投稿を拝見して思ったんですが、私もユーザーフォームにつて 興味があります。フォームを使っての入力はもちろんですが、フォームを使ってVLOOKUP FALSEのようなことは可能なのでしょうか? 宜しくお願いします。 ---- ユーザーフォーム・・・ですかぁ・・ 勉強不足でわたしにはさっぱりです(^^; またまた役立たず・・・(TT) 詳しい方の回答がたっくさんいらっしゃいますので、わたしもこっそり一緒に勉強させてください。 (ゆうり) ---- (ゆうり)様 ありがとうございます。 私もいろいろ勉強させていただきたいと思いますので、これからも宜しくお願いします。ありがとうございました。