Perché il wrapping di una formula di array Excel in una somma non produce in questo caso la somma dei contenuti?

StackOverflow https://stackoverflow.com/questions/808011

  •  03-07-2019
  •  | 
  •  

Domanda

Clever People,

In Excel, sembra che il wrapping di una formula di matrice in una SOMMA non produca la somma del contenuto della matrice in tutti i casi. (Cioè, mi sembra; chiaramente, potrei ben essere confuso.)

Ciò è emerso quando si è tentato di scrivere l'equivalente di un join interno in Excel. Per motivi che coinvolgono Excel per Mac, lo sto facendo senza usare Visual Basic o MS Query: solo formule di array e INDEX / MATCH. Penso di esserci riuscito, a parte questo bizzarro comportamento che non riesco a capire.

Attualmente sto usando un kludge, ma sarebbe bello non doverlo fare. Qualsiasi aiuto o consiglio sarebbe molto apprezzato.

Di seguito viene riprodotto il problema:

Tabella 1

key | fkey
----+------
  a |   x
  a |   y
  b |   x
  b |   y

Tabella 2

key | value
----+------
  x |   1
  y |  10

Il layout sopra dovrebbe rappresentare come appaiono queste due piccole tabelle nel foglio di calcolo: non sta succedendo nulla di intelligente. I quattro intervalli ovvi sono denominati table1.key , table1.fkey , table2.key e table2.value .

Quindi, quindi, il join interno. Vorrei quei valori della Tabella 2 che corrispondono a una chiave specifica nella Tabella 1, con il join su `table1.fkey = table2.key '. Immettere la formula:

{=("a"=table1.key)*INDEX(table2.value, MATCH(table1.fkey, table2.key, FALSE))}

in due celle verticali fornisce il risultato richiesto; vale a dire:

1
10

(Figo, o cosa?) Finora, tutto bene. Ma ora voglio davvero la somma dei due numeri sopra. Quindi ho semplicemente avvolto la formula sopra in una SOMMA e ho inserito il risultato in una singola cella:

{=SUM(("a"=table1.key)*INDEX(table2.value, MATCH(table1.fkey, table2.key, FALSE)))}

Risultato?

2

Qualcuno ha qualche idea cosa diavolo sta succedendo?

James

È stato utile?

Soluzione

L'argomento row_num di INDEX non può essere un array se utilizzato in una formula di array a cella singola. La funzione INDICE ritorna sempre 1. Prova

=SUM(INDEX(table2.value,{2,1}))

Restituirà sempre 10, poiché INDICE accetterà solo il primo elemento dell'array. Non so perché funzionino diversamente per le formule di array di celle singole rispetto a multicell.

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