Note: The other languages of the website are Google-translated. Back to English

Come copiare la formattazione di origine della cella di ricerca quando si utilizza Vlookup in Excel?

Negli articoli precedenti, abbiamo parlato di mantenere il colore di sfondo quando i valori di vlookup in Excel. Qui in questo articolo, introdurremo un metodo per copiare tutta la formattazione della cella della cella risultante quando si esegue Vlookup in Excel. Si prega di fare quanto segue.

Copia la formattazione di origine quando si utilizza Vlookup in Excel con una funzione definita dall'utente


Copia la formattazione di origine quando si utilizza Vlookup in Excel con una funzione definita dall'utente

Supponendo che tu abbia una tabella come mostrato nell'immagine sottostante. Ora è necessario verificare se un valore specificato (nella colonna E) è nella colonna A e restituire il valore corrispondente con la formattazione nella colonna C. Si prega di fare quanto segue per ottenerlo.

1. Nel foglio di lavoro contiene il valore che si desidera visualizzare, fare clic con il pulsante destro del mouse sulla scheda del foglio e selezionare Visualizza codice dal menu contestuale. Vedi screenshot:

2. In apertura Microsoft Visual Basic, Applications Edition finestra, copia sotto il codice VBA nella finestra del codice.

Codice VBA 1: Vlookup e valore restituito con formattazione

Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 20211203
    Dim I As Long
    Dim xKeys As Long
    Dim xDicStr As String
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.CutCopyMode = False
    xKeys = UBound(xDic.Keys)
    If xKeys >= 0 Then
        For I = 0 To UBound(xDic.Keys)
            xDicStr = xDic.Items(I)
            If xDicStr <> "" Then
                Set xRg = Application.Range(xDicStr)
                xRg.Copy
                Range(xDic.Keys(I)).PasteSpecial xlPasteFormats
            Else
                Range(xDic.Keys(I)).Interior.Color = xlNone
            End If
        Next
        Set xDic = Nothing
    End If
    Application.ScreenUpdating = True
    Application.CutCopyMode = True
End Sub

3. Quindi fare clic inserire > Moduloe copia il codice VBA 2 di seguito nella finestra del modulo.

Codice VBA 2: Vlookup e valore restituito con formattazione

Public xDic As New Dictionary
'Update by Extendoffice 20211203
Function LookupKeepFormat(ByRef FndValue, ByRef LookupRng As Range, ByRef xCol As Long)
    Dim xFindCell As Range
    On Error Resume Next
    Application.ScreenUpdating = False
    Set xFindCell = LookupRng.Find(FndValue, , xlValues, xlWhole)
    If xFindCell Is Nothing Then
        LookupKeepFormat = " "
        xDic.Add Application.Caller.Address, " "
    Else
        LookupKeepFormat = xFindCell.Offset(0, xCol - 1).Value
        xDic.Add Application.Caller.Address, xFindCell.Offset(0, xCol - 1).Address(External:=True)
    End If
    Application.ScreenUpdating = True
End Function

4. Clic Strumenti > Riferimenti. Quindi controlla il file Runtime di Microsoft Script casella nella Riferimenti - VBAProject la finestra di dialogo. Vedi screenshot:

5. premi il altro + Q tasti per uscire da Microsoft Visual Basic, Applications Edition finestra.

6. Selezionare una cella vuota adiacente al valore di ricerca e quindi immettere la formula =LookupKeepFormat(E2,$A$1:$C$8,3) nella Barra della formulae quindi premere il Entra chiave.

Note:: Nella formula, E2 contiene il valore che cercherete, $ A $ 1: $ C $ 8 è l'intervallo della tabella e il numero 3 significa che il valore corrispondente che restituirai si trova nella terza colonna della tabella. Si prega di cambiarli come necessario.

7. Continua a selezionare la prima cella del risultato, quindi trascina la maniglia di riempimento verso il basso per ottenere tutti i risultati insieme alla loro formattazione come mostrato nell'immagine sottostante.


Articoli correlati:


I migliori strumenti per la produttività in ufficio

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office/Excel 2007-2021 e 365. Supporta tutte le lingue. Facile implementazione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce ogni giorno centinaia di clic del mouse!
fondo officetab
Commenti (42)
Ancora nessuna valutazione. Puoi essere il primo a votare!
Questo commento è stato fatto dal moderatore sul sito
mi dà errore di compilazione, errore di sintassi

per favore aiutatemi
Questo commento è stato fatto dal moderatore sul sito
Buon Giorno,
Il codice è stato aggiornato nell'art. Grazie per il tuo commento.
Questo commento è stato fatto dal moderatore sul sito
Ho anche ricevuto l'errore del compilatore.
Viene corretto se si modifica la seguente variabile con "". No ';' nel mezzo.
LookupKeepFormat = " "
xDic.Add Application.Caller.Address, " "
Questo commento è stato fatto dal moderatore sul sito
Ciao,
Ci scusiamo per l'errore, il codice è stato aggiornato nell'articolo.
L'errore " " dovrebbe essere costituito da due virgolette " ". Grazie per il tuo commento.
Questo commento è stato fatto dal moderatore sul sito
Ho ricevuto lo stesso errore.

Dovrai cambiare " " per effettivo "', senza ';' come indicato di seguito
LookupKeepFormat = " "
xDic.Add Application.Caller.Address, " "

LookupKeepFormat = ""
xDic.Add Application.Caller.Address ""
Questo commento è stato fatto dal moderatore sul sito
Ciao,
Ci scusiamo per l'errore, il codice è stato aggiornato nell'articolo. Grazie per aver condiviso.
Questo commento è stato fatto dal moderatore sul sito
Questo è fantastico, grazie! L'unico problema è che trovo che funzioni bene se sto cercando nello stesso foglio, ma non riesco a farlo funzionare quando sto cercando di eseguire una ricerca in un foglio separato per i dati di origine. Continuerò a provare
Questo commento è stato fatto dal moderatore sul sito
Giulia, correggi queste righe:
nella funzione LookupKeepFormat:
xDic.Add Application.Caller.Address, xFindCell.Offset(0, xCol - 1).Address & "|" & LookupRng.Nome.genitore

in Sub Foglio di lavoro_Cambia:
Fogli(Split(xDic.Items(I), "|")(1)).Range(Split(xDic.Items(I), "|")(0)).Copia
Questo commento è stato fatto dal moderatore sul sito
Ehi Hugo,


Ho lo stesso problema di Giulia. Non funziona su altri fogli. Potresti aiutare a scrivere il codice per l'intera funzione e il foglio di lavoro secondario? Non sono sicuro di dove sostituire/inserire xDic.Add Application.Caller.Address, xFindCell.Offset(0, xCol - 1).Address & "|" & LookupRng.Parent.Nam and Sheets(Split(xDic.Items(I), "|")(1)).Range(Split(xDic.Items(I), "|")(0)).Copy


grazie in cambio
Questo commento è stato fatto dal moderatore sul sito
Apprezzo molto il seguito Hugo!
Sfortunatamente, come Vi, sono troppo principiante per capire dove inserire le correzioni del codice suggerite ...

Grazie ancora, buona giornata :)
Questo commento è stato fatto dal moderatore sul sito
Ciao


Ho provato a usare il codice, ma ottengo l'errore nella foto allegata. Qualsiasi aiuto sarà molto apprezzato.
Questo commento è stato fatto dal moderatore sul sito
Ciao,
Ci scusiamo per l'errore, il codice è stato aggiornato nell'articolo. Grazie per il tuo commento.
Questo commento è stato fatto dal moderatore sul sito
Ciao,

Non ottengo errori ed esegue la ricerca, ma poiché il mio valore di ricerca si trova su un altro foglio di lavoro (uno scenario più probabile), non estrae la formattazione. C'è una modifica al codice che posso apportare per questo? (Sii molto specifico su dove deve andare il cambiamento dato che sono un principiante di programmazione) Grazie! Sono entusiasta di aggiungere questa funzione a uno dei miei fogli di calcolo!!
Questo commento è stato fatto dal moderatore sul sito
Ciao, un po' di fortuna con questa domanda, come possiamo ottenere la formattazione da cercare tra i fogli?
Questo commento è stato fatto dal moderatore sul sito
Cerco anche il tweak.
Questo commento è stato fatto dal moderatore sul sito
Inoltre, se aggiungo la tua formula come parte di un'istruzione "If" (vedi sotto), formatta la cella come vuole LOL (o almeno sembra così. Una cella, il testo è diventato ombreggiato e in grassetto con un bordo superiore su la cella; un'altra cella, il testo centrato)


=SE($F19 = "", "",LookupKeepFormat(F19,'Articolo #s'!$A$1:$M$1226,2))
Questo commento è stato fatto dal moderatore sul sito
Ho provato questo e quello che tira solo il colore di sfondo e ricevo lo stesso errore. Errore di compilazione: rilevato nome ambiguo. Faccio clic su OK e viene evidenziato xDic. Eventuali suggerimenti? Non ho molta familiarità con tutto questo, quindi per favore aiutatemi/spiegate :) grazie in anticipo
Questo commento è stato fatto dal moderatore sul sito
Ciao Jeni,
Non dimenticare di abilitare l'opzione Microsoft Script Runtime come indicato nel passaggio 4.
Questo commento è stato fatto dal moderatore sul sito
Ciao. Ho creato un foglio di calcolo vuoto e duplicato il tuo esempio in Excel 2013, ma continuo a ricevere un errore di compilazione: errore di sintassi e Dim I As Long è evidenziato. C'è qualcosa che mi sfugge? Mi piacerebbe farlo funzionare. Grazie.
Questo commento è stato fatto dal moderatore sul sito
Ciao Laura,
Non dimenticare di abilitare l'opzione Microsoft Script Runtime come indicato nel passaggio 4.
Questo commento è stato fatto dal moderatore sul sito
Ciao, ho utilizzato il codice sopra in Excel 2010 senza problemi fino ad oggi. Tuttavia, sono stato recentemente aggiornato a Office 2016 e ora il codice si arresta in modo anomalo in Excel ogni volta che provo a riempire più di una riga. Sfortunatamente, non mi dà un errore diverso da "Microsoft Excel ha smesso di funzionare". Mi chiedevo se ti sei imbattuto in questo problema in precedenza e se c'è qualcosa che devo fare per farlo funzionare nel 2016. Grazie!
Questo commento è stato fatto dal moderatore sul sito
Ciao Leigh,
Il codice funziona bene nel mio Excel 2016. Stiamo cercando di aggiornare il codice per risolvere il problema. Grazie per il tuo commento.
Questo commento è stato fatto dal moderatore sul sito
Ciao, grazie per il codice. Non ricevo alcun messaggio di errore ma la formula funziona solo come farebbe un normale vlookup. Potresti per favore aiutare? Grazie per il tuo tempo.
Questo commento è stato fatto dal moderatore sul sito
Ciao

Ho esattamente lo stesso problema, hai capito come risolverlo?

Grazie!
Questo commento è stato fatto dal moderatore sul sito
ciao ho ricevuto l'errore "errore di compilazione: nome ambiguo rilevato: xDic
Questo commento è stato fatto dal moderatore sul sito
ciao ho ricevuto l'errore "errore di compilazione: nome ambiguo rilevato: xDic
Questo commento è stato fatto dal moderatore sul sito
Ciao, sono nuovo nell'uso di VBA e ho provato a utilizzare questo codice nel mio foglio di calcolo, ma la formattazione del testo nella scheda Rec2 non arriva alla scheda Rec quando viene utilizzata la ricerca. Qualsiasi aiuto sarebbe molto apprezzato. Grazie Pat
Questo commento è stato fatto dal moderatore sul sito
Ecco il file e la foto
Questo commento è stato fatto dal moderatore sul sito
Ottengo lo stesso errore di nome ambiguo: qualcuno è riuscito a risolverlo?
Questo commento è stato fatto dal moderatore sul sito
Ottengo lo stesso errore di nome ambiguo: qualcuno è riuscito a risolverlo?
Non ci sono ancora commenti pubblicati qui
Carica Altre
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite

Seguici

Copyright © 2009 - www.extendoffice.com. | Tutti i diritti riservati. Offerto da ExtendOffice, | Mappa del sito
Microsoft e il logo Office sono marchi o marchi registrati di Microsoft Corporation negli Stati Uniti e / o in altri paesi.
Protetto da Sectigo SSL