在 Excel 中使用公式:
在 G2 单元格输入以下公式:
excel
深色版本
=LookupFromSheet(C2, "E", E2, "F")
然后下拉填充。
✅ 示例说明:
| C (sheet名) | E (查找值) | G (公式结果) |
|---|---|---|
| W201DCSR01 | Q3.7 | =LookupFromSheet(C2,"E",E2,"F") → 返回 W201DCSR01 表中 E列=Q3.7 那行的 F列值 |
⚠️ 注意事项:
- 确保
W201DCSR01这个工作表存在。 - 查找列(E列)和返回列(F列)在目标工作表中要一致。
- 函数区分大小写吗?
Find方法默认不区分,但可以修改。 - 如果您想从第1行开始查找,把
SearchRange的2改为1。
如果您希望用纯公式实现(比如使用 INDIRECT),也可以,但会更复杂,且 INDIRECT 对闭合文件无效,对动态表名支持有限。
需要我提供 INDIRECT 版本吗?或者您想把这个值写入 F 列本身?请确认您的最终目标列。
Function LookupFromSheet(sheetName As String, lookupCol As String, lookupValue As Variant, returnCol As String) As Variant
Dim ws As Worksheet
Dim LastRow As Long
Dim SearchRange As Range
Dim FoundCell As Range
Dim ColIndex As Long
' 检查工作表是否存在
On Error Resume Next
Set ws = ThisWorkbook.Sheets(sheetName)
On Error GoTo 0
If ws Is Nothing Then
LookupFromSheet = "#SHEET NOT FOUND"
Exit Function
End If
' 获取该工作表中的最大行
LastRow = ws.Cells(ws.Rows.Count, lookupCol).End(xlUp).Row
' 设置查找范围
Set SearchRange = ws.Range(lookupCol & "1:" & lookupCol & LastRow) ' 假设从第2行开始
' 查找匹配值
Set FoundCell = SearchRange.Find(What:=lookupValue, LookIn:=xlValues, LookAt:=xlWhole)
If Not FoundCell Is Nothing Then
' 计算返回列的列号(如 "F" -> 6)
LookupFromSheet = ws.Cells(FoundCell.Row, Asc(returnCol) - 64).Value
Else
LookupFromSheet = "#NOT FOUND"
End If
End Function

被折叠的 条评论
为什么被折叠?



