1 dictionaryっぽいのをシートに対して作ろうと思ったが、どうせシートを探すなら一応2列に限定せずに対応できるようにlookupっぽく作った。

 

2コード

 

' キー・バリューペアから値を取得する関数(完全版)
Private Function getValueByKey( _
    ws As Worksheet, _
    key As String, _
    Optional defaultValue As Variant = "", _
    Optional keyColumn As String = "A", _
    Optional valueColumn As String = "B" _
) As Variant
    
    Dim lastRow As Long
    Dim i As Long
    
    lastRow = getLastRow(ws, keyColumn)
    
    For i = 2 To lastRow
        If ws.Range(keyColumn & i).Value = key Then
            getValueByKey = ws.Range(valueColumn & i).Value
            Exit Function
        End If
    Next
    
    getValueByKey = defaultValue
End Function

'------------------------

' 最終行取得(汎用)
Public Function getLastRow( _
    ws As Worksheet, _
    strCol As String _
) As Long
    
    getLastRow = ws.Range(strCol & Rows.Count).End(xlUp).Row
End Function

'------------------------
' 使用例
'
' 基本的な使用(A列キー、B列値)
' 価格 = getValueByKey(ws商品マスタ, "りんご", "価格未設定")
'
' デフォルト値のみ指定
' 在庫 = getValueByKey(ws商品マスタ, "みかん", 0)
'
' 列も指定(B列キー、D列値)
' 仕入先 = getValueByKey(ws商品マスタ, "S001", "未定", "B", "D")
'
' すべて指定
' 担当者 = getValueByKey(ws社員マスタ, "E001", "未定", "C", "E")
 

 

3参考

claudeにあれこれ言って書いてもらった。