人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ExcelでEMS送料の計算ができる表を作りたいと思っています。

http://www.post.japanpost.jp/fee/simulator/kokusai/ems.html
上記のEMSの料金表を参照して
ドロップダウンリストで重量と地域を入力すると
自動で料金がが出てくるようにしたいです。

重量 地域 料金
0.3kg▼ アジア ▼ 900円
1.5kg▼ ヨーロッパ▼ 3700円

このような感じです。
HTMLしかわからない初心者ですが、
もっともスマートにこの表をつくる方法を教えてもらえないでしょうか?
ずばりの回答をくださった方に100P以上差し上げます

●質問者: taro_tan
●カテゴリ:コンピュータ インターネット
✍キーワード:EMS アジア スマート ドロップ ヨーロッパ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● きゃづみぃ
●10ポイント

重量と地域は、それぞれのドロップダウンリストを作ります。

料金のほうは、別に表を作ってVlookupで ひっぱればいいです。

別の表は

ひとつのセルに

重量と地域を連結させたものを入れます。

その隣に 料金を入れます。

質問にあるパターンだと

重量地域 料金

0.3kgアジア 900円

1.5kgヨーロッパ 3700円

となります。


http://pc-cals.nishida-tf.com/?eid=211203

◎質問者からの返答

vlookupというのを初めてしりました。

便利ですね。ありがとうございます。


2 ● SALINGER
●10ポイント

○まず、郵便料金データの取り込み方法

国際郵便局料金表のホームページの表の左上の0.3kgまでから右下の最後まで選択してコピーします。

メモ帳などに貼り付けて、メモ帳の置換機能を利用して、「まで」と「円」を空白に置換してしまいます。

Excelでファイル→開くから先ほどのテキストファイルを開きます。(ファイルの種類をテキストファイルにすると表示されます)

テキストファイルウィザードが立ち上がるので途中区切り文字だけをタブからスペースに変えて次へを押していくとデータが挿入されたシートができます。

一番上に1行追加してアジア、オセアニア・北米・中米中近東、ヨーロッパ、南米・アフリカの項目を追加します。

一度Excel形式で保存してください。


○Excelで作成

一番上に行を追加します。

A1セルを選択してデータ→入力規則から、入力値の種類をリストにして0.3kgから30.0kgを範囲を指定してドロップダウンリストを作ります。

同様にB2セルにアジアから南米アフリカを範囲してドロップダウンリストを作ってください。

C3の数式を

=VLOOKUP(A1,A3:E45,MATCH(B1,B2:E2)+1)

にすると、A1とB2の結果からC3に金額が入ります。

◎質問者からの返答

ありがとうございます。

さっそくためしてみます。


3 ● Mook
●100ポイント ベストアンサー

設定手順です。

(1)価格表の WEB ページから価格リストをコピーします。

(2)EXCEL で新しいファイルを開き、先頭シートのA1の位置でペーストします。

   A1からE47 まで、データがあることを確認してください。

(3)EXCEL のシートタブを右クリックし、「コードの表示」を選びます。

(4)下記のコードをコピーし、開いたウィンドウに貼り付けます。

(5) Alt + F8 を押し、makeSearchEMS を実行します。

(6)もし、マクロを残したくなければ(3)で開いたウィンドウからコードを削除してください。

以上で、先頭シートで送料検索が出来るはずです。

2行目をコピーして下の行に貼り付ければ、複数で検索できます。


2枚目のシートは検索に使用しているので、変更しないようにしてください。

不明な点は、コメントでお尋ねください。

Const EMS_PRICE_LIST = "EMS価格表"
Const EMS_PRICE_CHECK = "EMS価格検索"

Sub makeSearchEMS()
 Columns("E").Copy Destination:=Columns("H")
 Columns("E").Copy Destination:=Columns("G")
 Columns("D").Copy Destination:=Columns("F")
 Columns("C").Copy Destination:=Columns("D")
 Columns("C").Copy Destination:=Columns("E")
 
 Rows("1:4").Delete
 Rows("1").Insert
 Range("A1").Resize(1, 8) = Array("地域", "第1地帯", "第2地帯", "", "", "", "第3地帯", "")
 Rows("2").Insert
 Range("A2").Resize(1, 8) = Array("重量", "アジア", "オセアニア", "北米・中米", "中近東", "ヨーロッパ", "南米", "アフリカ")

 Dim aRow As Long
 aRow = 3
 For Each area In Array("アジア", "オセアニア", "北米・中米", "中近東", "ヨーロッパ", "南米", "アフリカ")
 Cells(aRow, "J").Value = area
 aRow = aRow + 1
 Next

 Worksheets(1).Name = EMS_PRICE_LIST
 ActiveWorkbook.Names.Add Name:="WEIGHT", RefersToR1C1:="=" & EMS_PRICE_LIST & "!R3C1:R45C1"
 ActiveWorkbook.Names.Add Name:="AREA", RefersToR1C1:="=" & EMS_PRICE_LIST & "!R3C10:R9C10"
 ActiveWorkbook.Names.Add Name:="PRICE", RefersToR1C1:="=" & EMS_PRICE_LIST & "!R3C2:R45C8"
 
 With Range("A1:H2")
 .Interior.ColorIndex = 35
 .Borders.Weight = xlThin
 End With
 Range("C1:F1").MergeCells = True
 Range("G1:H1").MergeCells = True
 
 Worksheets.Add before:=Worksheets(1)
 With Worksheets(1)
 .Name = EMS_PRICE_CHECK
 .Range("A1:C1") = Array("重量", "地域", "価格")
 .Range("A1:C1").Interior.ColorIndex = 35
 .Range("A1:C2").Borders.Weight = xlThin
 .Range("C2").Formula = _
 "=INDEX(PRICE,MATCH(A2,WEIGHT,0),MATCH(B2,AREA,0))"
 End With
 
 With Worksheets(1).Range("A2").Validation
 .Delete
 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
 xlBetween, Formula1:="=WEIGHT"
 .IgnoreBlank = True
 .InCellDropdown = True
 .IMEMode = xlIMEModeNoControl
 .ShowInput = True
 .ShowError = True
 End With
 With Worksheets(1).Range("B2").Validation
 .Delete
 .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
 xlBetween, Formula1:="=AREA"
 .IgnoreBlank = True
 .InCellDropdown = True
 .IMEMode = xlIMEModeNoControl
 .ShowInput = True
 .ShowError = True
 End With
End Sub
◎質問者からの返答

お礼が遅れて申し訳ありません。

バッチリ動きました。まさにこれが欲しかったです。

コードも書いていただき大変助かりました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ