Excel: trovare un sottoinsieme di numeri che si aggiungono a un dato totale?


Risposte:


25

È possibile con il componente aggiuntivo Risolutore *. I seguenti passaggi hanno funzionato per me in Excel 2007 e 2010.

  1. Designare una cella per contenere il risultato (C1 per questo esempio): questa è la cella di destinazione e una colonna che Excel può utilizzare per il lavoro di scratch (B1: B100 per questo esempio)
  2. Nella cella di destinazione, immettere la formula "= SUMPRODUCT (A1: A100, B1: B100)" (senza virgolette). Questo calcolerà la somma di A1 * B1 + A2 * B2 + ... ecc
  3. Seleziona Apri il solutore (scheda Dati, gruppo Analisi)
  4. La cella target dovrebbe essere ovvia ($ C $ 1 per questo esempio)
  5. Per "Uguale a:" selezionare "Valore di:" e immettere il valore desiderato
  6. Nella sezione "Cambiando cella" inserisci "$ B $ 1: $ B $ 100" (senza virgolette e potrebbe essere necessario inizializzare questi valori su 0 tu stesso)
  7. Aggiungi un vincolo alle celle che può essere modificato. Nel menu a discesa, selezionare "bin" (Binario). Ciò limita i valori di queste celle a 0 (rimuovendo la corrispondente cella A dalla somma) o 1 (aggiungendo la corrispondente cella A alla somma).
  8. Fai clic su "Risolvi" e attendi. I numeri che fanno parte del sottoinsieme che stai cercando avranno un 1 nella colonna B.

Esempio


Se il solutore impiega molto tempo, puoi aiutarlo rimuovendo le righe che ovviamente non funzioneranno (il totale è in dollari e solo una riga ha centesimi diversi da zero)


Bonus: puoi avere Excel evidenziare automaticamente le celle che stai cercando aggiungendo la formattazione condizionale a quelle celle. Seleziona tutte le celle che desideri formattare e da (scheda Home) >> (gruppo Stili) >> Formattazione condizionale >> Nuova regola seleziona 'Usa una formula per determinare quali celle formattare'. Nella formula, inserisci '= $ B1 = 1' (senza virgolette) che valuterà vero se la riga corrispondente nella colonna B è 1. Per il formato, puoi aggiungere quello che vuoi (grassetto, corsivo, riempimento verde, eccetera).

Un altro modo semplice per trovare le righe importanti è ordinare la colonna B Z-> A, e tutti gli 1 verranno in cima.


* Il componente aggiuntivo del risolutore può essere installato con questi passaggi

  1. Fare clic sul pulsante Microsoft Office e quindi fare clic su Opzioni di Excel.
  2. Fai clic su Componenti aggiuntivi, quindi nella casella Gestisci, seleziona Componenti aggiuntivi di Excel.
  3. Fai clic su Vai.
  4. Nella casella Componenti aggiuntivi disponibili, selezionare la casella di controllo Componenti aggiuntivi Risolutore, quindi fare clic su OK. (Se il componente aggiuntivo Risolutore non è elencato nella casella Componenti aggiuntivi disponibili, fare clic su Sfoglia per individuare il componente aggiuntivo.)
  5. Se viene richiesto che il componente aggiuntivo Risolutore non è attualmente installato sul computer, fare clic su Sì per installarlo.

1
In Excel 2013 è necessario deselezionare "Ignora vincoli interi" dal menu delle opzioni. Altrimenti ottieni valori non INT per 0 e 1
Omar Shahine,

1
Per farlo funzionare correttamente: 1. La formula nella cella C1 dovrebbe essere sumPRODUCT (non solo somma) 2. Le celle nella colonna B dovrebbero avere tutte zero input in esse.

Grazie! Per me, i vecchi passaggi funzionano ancora, ma mi piace il sottoprodotto meglio perché non si basa sulla funzione delle formule di array.
Nate Parsons,

comunque per trovare tutte le combinazioni ... anche se esiste una soluzione trovata dal solutore .. come trovare le altre soluzioni ??? il mio array è qui: v = [1100, 1105, 11830, 14790, 2325, 2455, 2555, 2935, 3050, 3150, 3185, 3370, 3475, 350, 3530, 3590, 3680, 3745, 885, 9624] sum = 43029 ... solution1 = [350, 1100, 2325, 2455, 2555, 2935, 3150, 3745, 9624, 14790], solution2 = [350, 885, 1100, 1105, 2325, 2455, 2555, 3530, 3590, 3680 , 9624, 11830]
ihightower l'

2

Esiste un SumMatch aggiuntivo per Excel a basso costo , che evidenzierà il sottoinsieme di numeri che si sommano a una somma target.

inserisci qui la descrizione dell'immagine


1
Ciao AIsoft, buona scoperta. Forse la prossima volta puoi aggiungere qualche informazione in più.
nixda,

@pnuts Ho sbagliato? Non capisco cosa intendi con AUD $ 30
nixda il

@pnuts Ah ok, questo è un buon punto.
nixda,

6
Nota per me: AUD $ 30 = 30 dollari australiani. Non è un riferimento a una cella di Excel [AUD30] con una colonna fissa ....: D
nixda

1
Il prezzo è un inconveniente, così come la mancanza di istruzioni chiare. Qualcosa di più di 1 frase + 1 foto dal sito Web del prodotto, davvero.
Nate Parsons,
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.