从其他表格引用数据到总表-宏全自动。

在 Excel 中使用公式:

在 G2 单元格输入以下公式:


excel

深色版本

=LookupFromSheet(C2, "E", E2, "F")

然后下拉填充。


✅ 示例说明:

C (sheet名)E (查找值)G (公式结果)
W201DCSR01Q3.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菌王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值