|
こんな物かな?
Option Explicit
Public Sub Sample()
Dim i As Long
Dim j As Long
Dim rngTop As Range
Dim vntResult As Variant
Dim rngList As Range
'座標の有る表の左上隅の位置を設定
Set rngTop = Worksheets("Sheet1").Cells(1, "A")
'座標の有る表を配列に取得
vntResult = rngTop.CurrentRegion.Value
'置換する値の有るListの範囲を取得
With Worksheets("Sheet2")
Set rngList = Range(.Cells(1, "B"), _
.Cells(65536, "B").End(xlUp))
End With
'座標の有る表の値を置換
For i = 1 To UBound(vntResult, 1)
For j = 1 To UBound(vntResult, 2)
vntResult(i, j) _
= RowSearch(vntResult(i, j), rngList)
Next j
Next i
'座標の有る表を書き戻す
With rngTop
.Resize(UBound(vntResult, 1), _
UBound(vntResult, 2)) = vntResult
End With
Set rngList = Nothing
Set rngTop = Nothing
Beep
MsgBox "処理が完了しました"
End Sub
Private Function RowSearch(vntKey As Variant, _
rngScope As Range) As Variant
' 一覧の探索
Dim vntFound As Variant
'一覧を探索して行位置を取得
vntFound = Application.Match(vntKey, rngScope, 0)
'エラーで無い場合(一覧に値が有る)
If Not IsError(vntFound) Then
'取得行の探索列左の値を返す
RowSearch = rngScope(vntFound).Offset(, -1).Value
End If
End Function
|
|