Domanda

Sto facendo un hlookup su un valore che si estende su più colonne. I miei dati sono simili a questo:

      A      B      C      D 
  ---------------------------  
1|       Col1          Col2
2|     x      y      z      w
3|
4|

Nelle righe 3 e 4 (A3, B3, C3, D3, ecc.), Vorrei mettere formule che faranno una ricerca da qualche altra parte nella cartella di lavoro. Il trucco è che mi piacerebbe cercare "Col1" per le colonne A e B e "Col2" per le colonne C e D. "Col1" è in A1, ma in realtà A1 e B1 sono uniti. Quando faccio riferimento ad A1, "Col1" appare, ma quando faccio riferimento a B1, il valore restituito è vuoto.

Qualche idea?

È stato utile?

Soluzione

Per accedere a " Col1 " e "Col2" etichette, è possibile utilizzare quanto segue:

  

= INDEX ($ 1: $ 1,1, COLONNA () - MOD (COLONNA () - 1,2))

Nota: questo presuppone che tu stia raggruppando lo stesso numero di celle. Se fossero tre celle, cambieresti l'ultimo numero nella formula in 3 e così via.

Modifica: Ecco come funziona:

INDICE ($ 1: $ 1,1, x) restituisce il valore della cella nella riga 1, colonna x. Se la tua tabella non si trova effettivamente nell'angolo in alto a sinistra del foglio di lavoro, puoi cambiarla nell'intervallo effettivo che include tutte le etichette unite. In questo caso, sarebbe: INDICE ($ A $ 1: $ D $ 1,1, x)

COLONNA () restituisce il numero di colonna della cella corrente (1 nella colonna A, 2 nella colonna B, ecc.)

MOD (COLUMN () - 1, x) restituisce un offset dalla colonna corrente alla colonna che contiene l'etichetta corretta

Altri suggerimenti

Ecco un'altra soluzione che può funzionare anche quando le celle unite hanno larghezze diverse, lasciatemi illustrare con un esempio:

  1. Apri un nuovo Excel, unisci B1, C1, D1
  2. Digita Col1 nella cella unita
  3. In B2 , digita formula = B1 e in C2 = C1 , in D2 =D1
  4. Dovresti vedere B2 come Col1 mentre C2, D2 sono 0
  5. In B3 , digita la formula = A3 , copia
  6. Fai clic con il pulsante destro del mouse sulla cella unita B1: D1 , seleziona " incolla speciale - > formule "
  7. Dovresti vedere la cella unita essendo 0
  8. Digita Col1 nella cella unita
  9. Ora dovresti vedere tutti B2, C2, D2 come Col1 , ovvero ora puoi fare riferimento alla cella unita come ti aspetti che sia

Se puoi più celle unite, ognuna di diverse larghezze, incolla semplicemente la formula in una sola volta.

Il motivo alla base di ciò funziona a causa di una scelta del design del perculier di Microsoft. Sembra che quando si incollano le formule nelle celle unite, ogni cella sottostante riceve la formula (al contrario, se si immette un valore, solo la cella in alto a sinistra lo ottiene) Quindi è possibile utilizzarlo a proprio vantaggio e incollare una formula che fa riferimento la cella accanto ad essa, quindi sovrascrive la cella in alto a sinistra con il valore desiderato, quindi ogni cella sottostante la cella unita avrà quel valore.

Ho creato una semplice funzione in vba che risolverà questo problema:

Function mergedText(rngMergedCell As Range)

    If rngMergedCell.MergeCells = True Then
        mergedText = rngMergedCell.MergeArea(1, 1)
    Else
        mergedText = rngMergedCell
    End If

End Function

Se la cella è una cella unita, la funzione restituirà il valore nel primo elemento della cella unita: è qui che la cella unita memorizza il suo valore

Una variante più generica della proposta di e.James è:

={INDEX($A$1:A1, 1, MAX(NOT(ISBLANK($A$1:A1))*COLUMN($A$1:A1)-COLUMN($A$1)+1))}

Questo si basa sul fatto che le celle unite sono vuote tranne la prima (a meno che tu non sia in un caso come la proposta di Martin).

Nota: le parentesi graffe sono lì per contrassegnare una formula di matrice (non inserirle, basta premere alt + Invio per confermare la formula nella cella).

Mi rendo conto di essere in ritardo su questa discussione, ma ho trovato una risposta davvero semplice a questo.

Se, ad esempio, l'etichetta viene unita su 4 colonne a1: d1 e se fai riferimento a b1, restituirai " " ;. Per trovare dinamicamente le etichette giuste usa questa FX nella tua nuova tabella:

=if(OriginalTable!B1="",ThisTable!A1,OriginalTable!B1)

Sono sicuro che ti renderai conto che questo acquisirà intervalli in e1: h1 ecc. mentre trascini.

Questo è tutto. Spero che aiuti qualcuno.

Le celle B1 e D2 non contengono valori, solo A1 e C1 hanno qualcosa al loro interno.

Quindi dovrai solo assicurarti che le tue formule nelle colonne A e B si riferiscano entrambe ad A1 come valore di ricerca e che le tue formule nelle colonne C e D facciano riferimento a C1 per il valore di ricerca.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top