簡體   English   中英

從Excel中的另一個單元格中找到一個單元格的單元格引用

[英]find cell reference of a cell from another cell in excel

我有一個工作表,它從同一工作簿(= data!C68)中的另一個工作表返回一個值,該工作表返回一個值。

在另一個單元格中,我想引用原始單元格中的引用,但將行增加1-(= data!C69)。 單元不彼此相鄰。

通過功能或小舌可以做到嗎?

謝謝

喬納森

有很多方法可以實現這一目標。 這是一種方法。 我通過合並要偏移的行和列來擴展了功能。 將此代碼粘貼到模塊中

句法

= GetOffset(范圍,行,顏色)

備注

范圍 (必填)是具有公式的單元格

(可選)要偏移的行

上校 (可選)列(S)要偏移

樣品用量

= GetOffset(A1):這將從A1所引用的同一單元格中獲取值。 如果A1引用=data!C69GetOffset將從data!C69獲取值。

= GetOffset(A1,1):這將從A1所引用的下一個單元格(向下1行)中提取值。 如果A1引用=data!C69GetOffset將從data!C70獲取值。

= GetOffset(A1,1,1):這將從A1所引用的下一個單元格(1行向下1行)中提取值。 如果A1引用=data!C69GetOffset將從data!D70獲取值。

= GetOffset(A1,0,1):這將從A1所引用的下一個單元格(跨過1 Col的同一行)中獲取值。 如果A1引用=data!C69GetOffset將從data!D69獲取值。

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
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 )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM