Formula di Excel che restituisce l'indirizzo del precedente immediato della cella?


2

Come posso restituire l'indirizzo del precedente diretto di una cella? E usarlo in una formula, come OFFSET () o IF ()?

vale a dire:

  • La cella con l'indirizzo di C1 punta alla cella D30 (sullo stesso foglio o un'altra nella stessa cartella di lavoro)
  • CELL (C1) restituisce C1, non D30, INDEX (C1) restituisce il valore di C1.
  • Range ("C1"). DirectPrecedent dovrebbe funzionare, ma non riesco a trovarlo in nessun formato funzionante.

Ho provato a creare una funzione:


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

Anche questo non sembra funzionare (ma non conosco VBA quindi non mi sorprende).

Quindi, cosa posso fare per ottenere qualcosa di utilizzabile come:

  • OFFSET(DirectPrecedentOf(C1),0,3) - la cella 3 colonne a destra di D30

  • oppure: IF(DirectPrecedentOf(C1)=TODAY(),"YES","NO")- Se D30 = data odierna, restituire "SÌ"

È possibile, se C1 indica D30 o "Foglio2"! D30?

EDIT: Mi è stato suggerito di chiarire PERCHÉ ne ho bisogno, quindi ecco maggiori informazioni:

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

Fondamentalmente, voglio qualcosa come "Nella colonna C, inserisci la data dalla colonna 'Foglio2'! D, Nella cella B1, inserisci il valore dalla cella tre celle a destra di qualunque cella viene chiamata nella colonna C"


Range(C1).DirectPrecedent- tale funzione / proprietà non esiste in Excel, perché la usi? Hai un modulo / componente aggiuntivo che lo implementa? Inoltre, in una formula possono essere presenti più celle, quale si desidera utilizzare in questo caso?
— Máté Juhász,

Quello che stai cercando è generalmente gestito tramite VLOOKUP o INDEX & MATCH, ad es.VLOOKUP(C1,Sheet2!D30:G40,4,false)
— Máté Juhász il

@ MátéJuhász Range("range").DirectPrecedentsesiste, in VBA. Sto cercando di trovare un modo per usarlo in una formula o trovare un altro modo che dia lo stesso risultato. Guarderò VLOOKUP, grazie!
— Christiebunny il

Per restituire un valore in una funzione in VBA si assegna il valore restituito al nome della funzione che è "precedente precedente = intervallo (c1) .precedenti diretti"
— Ross,

Risposte:


2

Secondo le mie conoscenze, non esiste una formula del genere Excel, potrebbe restituire l'indirizzo di cella precedente e dipendente .

Ma posso suggerirti un codice VBA che trova il precedente come OP.

NB: Dopo aver eseguito questo codice, controlla la finestra immediata nell'editor VBA per l'indirizzo cella del precedente.

Private 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

Nota Excel cercherà i precedenti per l'intervallo di dati A2: A10, è possibile impostare come necessario.

Spero che questo ti aiuti. Ho pubblicato questa soluzione, dopo che è stata testata da me.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.