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.