Sub BusRyoukin()
Dim ws01, ws02 As Worksheet
Dim L, I, M, lRow, xRow, mRow As Long
Set ws01 = Worksheets("運賃計算(バス)")
Set ws02 = Worksheets("運賃別・回数別一覧")
xRow = ws01.Cells(Rows.Count, "A").End(xlUp).Row 'シート(運賃計算)A列最終行
lRow = ws02.Cells(Rows.Count, "A").End(xlUp).Row 'シート(運賃別・回数別一覧)A列最終行
For I = 2 To xRow 'シート(運賃計算)2行目~最終行まで、ループ
mRow = 0
On Error Resume Next 'エラーが発生しても続行する。
mRow = WorksheetFunction.Match(ws01.Cells(I, "C"), ws02.Range("A5:A" & lRow), 0) + 4 'シート(運賃計算)から社員ごとの「運賃単価」とシート(運賃別・回数別一覧)から同一運賃の行を求める
On Error GoTo 0
If mRow = 0 Then
ws01.Cells(I, "E") = "該当のデータ無し" '該当する運賃が無ければ、「該当のデータ無し」と表示する。
Else
ws01.Cells(I, "E") = (ws02.Cells(mRow, ws01.Cells(I, "D") - 18)) * 6 'シート(運賃別・回数別一覧)から運賃・乗車回数に該当する料金を求めて、6を掛けて:6か月分に計算します。
End If
Next I
End Sub
Sub trainRyoukin()
Dim ws01, ws02 As Worksheet
Dim L, I, M, lRow, xRow, mRow As Long
Dim Train_In, Train_Out, Train_Hit01, Train_Hit02 As Range
Dim Train_X, Train_Y As String
Set ws01 = Worksheets("運賃計算 (電車)")
Set ws02 = Worksheets("電車運賃表")
Set Train_In = ws02.Range("A2:A7") 'シート(電車運賃表)の乗車駅名を範囲セットします。(行)
Set Train_Out = ws02.Range("B1:G1") 'シート(電車運賃表)の降車駅名を範囲セットします。(列)
xRow = ws01.Cells(Rows.Count, "A").End(xlUp).Row 'シート(運賃計算 (電車))A列の最終行
For I = 2 To xRow 'シート(運賃計算)2行目~最終行まで、ループ
Train_X = ws01.Cells(I, "C") '乗車駅セット
Train_Y = ws01.Cells(I, "D") '降車駅セット
Set Train_Hit01 = Train_In.Find(what:=Train_X, lookat:=xlWhole) '乗車駅(セル)位置を把握する。
Set Train_Hit02 = Train_Out.Find(what:=Train_Y, lookat:=xlWhole) '降車駅(セル)位置を把握する。
If Train_Hit01 Is Nothing Or Train_Hit02 Is Nothing Then
ws01.Cells(I, "F") = "該当駅なし" '乗車駅または、降車駅が電車運賃表に該当しなければ、「該当駅なし」と表示する。
Else
ws01.Cells(I, "F") = ws02.Cells(Train_Hit01.Row, Train_Hit02.Column) 'シート(電車運賃表)より、該当する乗車駅(行),降車駅(列)により運賃を代入します。
ws01.Cells(I, "G") = ws01.Cells(I, "F") * ws01.Cells(I, "E") '運賃×乗車回数を掛けた合計を計算します。
End If
Next I
End Sub