从excel中的另一个单元格中查找单元格的单元格引用

时间:2012-01-29 18:53:03

标签: excel vba excel-vba

我有一个工作表,它返回同一工作簿(= data!C68)中不同工作表的值,该工作表返回一个值。

在另一个单元格中,我想引用原始单元格中的引用,但将行增加1 - (= data!C69)。细胞不是彼此相邻的。

是否可以使用函数或fromula?

由于

乔纳森

2 个答案:

答案 0 :(得分:2)

有很多方法可以实现这一目标。这是一种方式。我通过合并你想要偏移的行和列来扩展了这个功能。将此代码粘贴到模块中

<强>语法

=的getOffset(范围,行,列)

<强>说明

范围(必需)是具有公式

的单元格

(可选)要偏移的行

Col (可选)要偏移的列

样本使用

= GetOffset(A1):这将从A1所指的同一个单元格中拾取值。如果A1指的是=data!C69,则 GetOffset 将从数据中获取值!C69

= GetOffset(A1,1):这将从A1所指的下一个单元格(1行向下)中拾取值。如果A1指的是=data!C69,则 GetOffset 将从数据中获取值!C70

= GetOffset(A1,1,1):这将从A1所指的下一个单元格(1个向下的1行向下)中拾取值。如果A1指的是=data!C69,则 GetOffset 将从数据中获取值!D70

= GetOffset(A1,0,1):这将从A1所指的下一个单元格(1个Col的相同行)中拾取值。如果A1指的是=data!C69,则 GetOffset 将从数据中获取值!D69

<强> CODE

Public Function GetOffset(Rng As Range, Rw As Long, Col As Long) As Variant
    Dim MyArray() As String, strTemp As String
    Dim TempRow As Long, TempCol As Long

    On Error GoTo Whoa

    Application.Volatile

    MyArray = Split(Rng.Formula, "!")

    TempRow = Range(MyArray(UBound(MyArray))).Row
    TempCol = Range(MyArray(UBound(MyArray))).Column

    TempRow = TempRow + Rw
    TempCol = TempCol + Col

    strTemp = MyArray(0) & "!" & Cells(TempRow, TempCol).Address

    GetOffset = Application.Evaluate(Trim(strTemp))
    Exit Function
Whoa:
End Function

答案 1 :(得分:2)

Option Explicit
Function GetCellReferenceUsedInFormula(ByVal src As Range) As Range
If src.HasFormula Then
    Set GetCellReferenceUsedInFormula = Evaluate(Mid(src.Formula, 2))
End If
End Function

并在OFFSET

的公式中使用上述函数
=OFFSET(GetCellReferenceUsedInFormula(A1),1,0)

这假设单元格A1包含公式=data!C68 请注意,VBA代码假定公式很简单(即=somecellreference)。