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にあれこれ言って書いてもらった。