卒業研究でエクセルVBAを使ってJR線の料金表を作ることになりました。
調べたい料金の区間の駅名を選択して、ボタンを押すとその区間の料金が表示されるというものを作りたいのですが、ちょっとわからないことがあるので教えてください。
例えば、山手線でやったとします。
既にエクセルには下のようにデータを打ち込んであります。
駅名 原宿 渋谷 恵比寿→
原宿 130 130
渋谷 130 130
恵比寿130 130
↓
これでコンボボックスを2つ用意して、両方に駅名を入れておきます。
そのコンボボックスから「渋谷」と「恵比寿」を選んでボタンを押すと上の表を使って「130」と表示されるようにしたいのですが、どうプログラムを書いていいのかがわかりません。
マッチ関数を使えばいいとどこかのサイトに書いてあったのですが、いまいちよく調べてもわかりませんでした。
よければ教えていただけると助かります。
説明が下手ですいません…。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
まず、駅名に整数のコードを付けることです。
そうすれば、全部のデータは、ふつうの2次元の配列に納まるはずです。なお、手段に関するルールや制約事項があるのか、よく分かりませんが、ご提示の方法は、駅数が増えるとデータが急速に増えるので、あまり良いとは思えません。
まず、どこかの駅を基準として、各駅までの距離を表に載せます。これは1次元の表です。次に、JRの料金は、簡単な距離の関数ですから、2つの駅を指定すれば、すぐに答が出ます。
ただし、山手線は、中央線経由というショートカットがあるので、距離を計算するアルゴリズムに工夫が必要です。しかし、このアルゴリズムもレポートの目玉になるので、取り組む価値があると思いますよ。
No.4
- 回答日時:
エクセルのシートのセルの値は
Cells(i,J)で値が取れます。
i はA1セルからの行数(序数)で何番目、すなわち第何行目かです。
j はA1セルから何番目の列かの数(序数)です。
ーー
コンボ1を乗車駅として、コンボで選択された値を取得します。
表の乗車駅名の並んだ、見出し列のセルでで何番目かを探せば良いのです。
同じく
コンボ2を降車駅として、コンボで選択された値を取得します。
表の降車駅名の並んだ、見出し行のセルで何番目かを探せば良いのです。
ーーー
探す方法は、VB(A)ではFindメソッドです。
しかしMatch関数でも
Application.WorksheetFunction.Match(・・・)
が使えます。
ーーー
例データA1:E5
ー原宿渋谷恵比寿目黒
原宿ー120140160
渋谷120ー120140
恵比寿140120ー120
目黒160160120ー
あわてているので表内容はおかしいかも、ご免>
ーー
Sheet2のA1に目黒
Sheet2のA1に渋谷
同駅はチェックして警告すること(略)
ーーー
Sub test01() 'コマンドボタンのクリックイベントに挟む
Dim sh1 As Worksheet
Set sh1 = Worksheets("Sheet1")
s = Worksheets("Sheet2").Range("A1") 'コンボ1の値を持ってくる
t = Worksheets("Sheet2").Range("B1") 'コンボ2の値を持ってくる
i = Application.WorksheetFunction.Match(s, sh1.Range("$a$1:$a$100"), 0)
j = Application.WorksheetFunction.Match(t, sh1.Range("$a$1:$z$1"), 0)
MsgBox Worksheets("Sheet1").Cells(i, j)
Worksheets("Sheet2").Range("c1") = Worksheets("Sheet1").Cells(i, j)
End Sub
ーーーー
結果
Sheet2のC1に160
No.3
- 回答日時:
その程度であればVBAを使わなくても関数だけで可能です。
WorkSheetFunctionプロパティを使えば、シートの関数がVBAで利用出来ます。
>「渋谷」と「恵比寿」
m * n で列と行位置を取得できれば、難しい事は無いでしょう。
http://plaza.rakuten.co.jp/pasodairy/diary/20050 …
http://www.moug.net/tech/exvba/0100035.htm
No.2
- 回答日時:
> 卒業研究でエクセルVBAを使ってJR線の料金表を作ることになりました。
うーむ。何を「研究」するのだろう・・・
#「卒業制作」ではなく「卒業研究」なんですよね・・・
> マッチ関数を使えばいいとどこかのサイトに書いてあったのですが、
マッチ関数(MATCH関数)は、Excelの組み込み関数で、VBAの関数では有りませんよ。
#ExcelとExcelVBAを混同している(or区別できていない)様な・・・
VBAなら、「Find メソッド」を使えば・・・
『
"渋谷"をキーワードにして、何列目に渋谷のデータがあるか調べ、
"恵比寿"をキーワードにして、何行目に渋谷のデータがあるか調べ、
その列・行にある金額を見る
』とか・・・
No.1
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[Excel VBA]特定の条件で文字を...
-
エクセル タブの下のメニューを...
-
【VBA】スペースが入っていない...
-
【VBA】値を変更しながら連続で...
-
VBA実行後に元のセルに戻りたい
-
エクセルのマクロついて教えて...
-
VBA 別ブックから条件に合うも...
-
エクセルのマクロについて教え...
-
vbaにてseleniumを使用したedge...
-
【ExcelVBA】インデックスが有...
-
マクロについて質問です。 セル...
-
VBA コードどこがおかしいですか?
-
pdfファイルの複数添付 引数の型
-
Excel_VBAについて質疑です。(...
-
Vba ファイル書き込み時に書き...
-
配列のペースト出力結果の書式...
-
エクセルのマクロについて教え...
-
vba 別ブックに転記
-
Excel 範囲指定スクショについ...
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 別ブックからコピペしたい...
-
VBA 別ブックから条件に合うも...
-
vba 別ブックに転記
-
【ExcelVBA】インデックスが有...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセル タブの下のメニューを...
-
配列のペースト出力結果の書式...
-
Web画面の文字をVB6で取得したい
-
エクセルのマクロについて教え...
-
エクセルのマクロついて教えて...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
[Excel VBA]特定の条件で文字を...
-
エクセルのマクロについて教え...
-
VBA 入力箇所指定方法
-
EXCEL vbaでシート上に配置した...
-
エクセルのマクロについて教え...
おすすめ情報