2

Как я могу вернуть адрес прямого прецедента ячейки? И использовать его в формуле, например, OFFSET() или IF()?

то есть:

  • Ячейка с адресом C1 указывает на ячейку D30 (либо на том же листе, либо на другой в той же книге)
  • CELL (C1) возвращает C1, а не D30, INDEX (C1) возвращает значение C1.
  • Диапазон ("С1").DirectPrecedent должен работать, но я не могу представить его в каком-либо рабочем формате.

Я попытался сделать функцию:


Function DirectPrecedent(rng As Range)
    Range(rng).DirectPrecedents
End Function

Который также, кажется, не работает (но я не знаю VBA, поэтому я не удивлен там).

Итак, что я могу сделать, чтобы получить что-то полезное, как:

  • OFFSET(DirectPrecedentOf(C1),0,3) - ячейка 3 столбца справа от D30

  • или: IF(DirectPrecedentOf(C1)=TODAY(),"YES","NO") - если D30 = сегодняшняя дата, вернуть "YES"

Возможно ли это, указывает ли C1 на D30 или на «Sheet2»!D30?

РЕДАКТИРОВАТЬ: Было предложено уточнить, ПОЧЕМУ мне это нужно, так вот больше информации:

B1: OFFSET(DirectPrecedentOf(C1),0,3)
C1: 'Sheet2'!D30
'Sheet2'!D30:D40: List of dates
'Sheet2'!G30:G40: List of dollar amounts

По сути, я хочу что-то вроде «В столбце C, введите дату из столбца« Sheet2 »!D, В ячейку B1 поместите значение из трех ячеек справа от того, какая ячейка вызывается в столбце C "

1 ответ1

2

Насколько мне известно, нет такой формулы, Excel, может вернуть прецедент и зависимый адрес ячейки.

Но я могу предложить вам код VBA, который находит прецедент в качестве OP.

NB. После выполнения этого кода проверьте немедленное окно в редакторе VBA для адреса ячейки прецедента.

Частный Sub CommandButton1_Click()

Dim rngToCheck As Range
Dim rngPrecedents As Range
Dim rngPrecedent As Range

Set rngToCheck = Range("A2:A10")

On Error Resume Next
Set rngPrecedents = rngToCheck.Precedents
On Error GoTo 0

If rngPrecedents Is Nothing Then
    Debug.Print rngToCheck.Address(External:=True) & _
                "Range has no precedents"
Else
    For Each rngPrecedent In rngPrecedents
        Debug.Print rngPrecedent.Address(External:=True)
    Next rngPrecedent
End If

End Sub

Примечание. Excel выполнит поиск прецедентов для диапазона данных A2:A10, который вы можете установить по своему усмотрению.

Надеюсь, это поможет вам. Я разместил это решение после того, как оно было проверено мной.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .