卒業研究でエクセル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で質問しましょう!
似たような質問が見つかりました
- 電車・路線・地下鉄 高崎線の特別快速は何のために存在しているのですか? 4 2023/08/08 00:46
- 商店街 軽度知的障害者のレベルが 1 2023/04/16 16:25
- 電車・路線・地下鉄 Suicaについて(定期券タイプは除く) 7 2022/10/17 13:17
- 電車・路線・地下鉄 【鉄道】山手線の駅の格付けランキングを作ってみました!皆さんのご意見をよろしくお願いいたします。 4 2023/02/11 16:45
- 引越し・部屋探し 至急回答欲しいです!!( ; ; ) 20代前半で、都内で一人暮らしの物件を探している女です! 今2 8 2023/01/18 21:42
- 電車・路線・地下鉄 山手線値上げ! 値上げ前に買った回数券、定期券などは値上げ後も追加料金なしで使えるのか? 6 2022/04/06 07:14
- 電車・路線・地下鉄 定期区間について 4 2022/07/18 07:19
- 電車・路線・地下鉄 定期券について 2 2023/06/11 19:24
- 電車・路線・地下鉄 東横線と田園都市線 帰宅ラッシュの激しいのはどっち!? 5 2023/05/05 12:04
- 電車・路線・地下鉄 JR線の愛称線名は、どうなっているのですか? 5 2023/05/20 11:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba 実数および実数タイプの変...
-
Excelのマクロについて教えてく...
-
VBA レジストリの値の読み方に...
-
Excel VBA 定義されたプロージ...
-
Excel マクロについての相談
-
エクセルVBAについて
-
Vba SelStart、SelLen教えてく...
-
エクセルの合計を自動で表示さ...
-
Excelのマクロでワードのテキス...
-
Excelについて
-
2つのマクロでチェックボックス...
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
VBAの質問になります Userform内で
-
VBA listBoxから
-
VBAで各列の"+"と"o"の合計数を...
-
VBA初心者 Ctrl+での操作、ボタ...
-
VBA 複数条件の分岐処理の上手...
-
VB.net(VB)で、フォームにExcel...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 定義されたプロージ...
-
Excel-VBAのmsgBox()の不思議
-
【VBA】マクロの入ったファイル...
-
VBA 複数条件の分岐処理の上手...
-
現在のブックを閉じないで、マ...
-
VBAで各列の"+"と"o"の合計数を...
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ユーザーフォームに別シートか...
-
エクセルのマクロについて教え...
-
ExcelVBA シート名を複数セルか...
-
エクセルのマクロについて教え...
-
VBA listBoxから
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
おすすめ情報