Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di natasha
    Registrato dal
    Sep 2000
    Messaggi
    1,307

    Estrarre dati che danno una certa somma da Excel

    Buongiorno a tutti,
    ho il seguente problema: ho una lista di valori in Excel la cui somma è pari ad un certo numero (es. 5326,57). Fra questi valori, voglio evidenziare quelli la cui somma è il più vicino possibile ad un certo valore (per esempio 500). Esiste un modo per farlo?
    Kisses,

    Nat

  2. #2
    Utente di HTML.it L'avatar di natasha
    Registrato dal
    Sep 2000
    Messaggi
    1,307
    Dimenticavo: va bene anche se mi dite come risolvere il problema in Access o SQL Server....
    Kisses,

    Nat

  3. #3
    Se usi un grafico?
    Retta per la somma e una che comprenda gli altri valori...(ma giustamente nn li evidenzia!)..
    e se provassi a scrivere un pezzetto d codice tipo se (somma-valore) è inferiore ad un det numero allora la cella si colora....
    Altre idee nn mi vengono in mente...


    Spero d avert aiutato
    Ciao

    VaneX

  4. #4
    Utente di HTML.it L'avatar di Dream
    Registrato dal
    Mar 2000
    Messaggi
    695
    Scusa fammi capire vuoi sapere quali sono le combinazioni di valori che sommati più si avvicinano ad esempio a 500... significherebbe provare conbinazioni di coppie, terne, ecc... un lavoro così pesante che probabilmente non vedresti mai finito visto la complessita computazionale della cosa...

    O semplifichi la cosa o mi sa che è improponibile...

  5. #5
    Utente di HTML.it L'avatar di natasha
    Registrato dal
    Sep 2000
    Messaggi
    1,307
    A chi interessa ancora: ho risolto il problema con la seguente macro:

    Sub SommaSelezionate()
    Dim somma As Double
    Dim contatore As Integer
    Dim contatoreSelezionati As Integer
    Dim contatoreSomma As Integer
    Dim pivot As Integer
    Dim differenza As Double
    Dim limite As Double
    Dim idCella As String
    Dim idCellaVal As String
    Dim valCella As String
    Dim valCellaVal As Double
    Dim destCella As String
    Dim partCella As String
    Dim diffCella As String
    Dim idDestCella As String

    somma = 0
    contatoreSomma = 0
    limite = Application.Range("A100").Value

    For contatore = 1 To 96
    contatoreSomma = contatoreSomma + 1
    idCella = "A" & contatore
    idCellaVal = Application.Range(idCella).Value
    valCella = "B" & contatore
    valCellaVal = Application.Range(valCella).Value
    valCellaVal = Round(valCellaVal, 2)
    somma = somma + valCellaVal
    destCella = "D" & contatoreSomma
    Application.Range(destCella).Value = idCellaVal

    If somma > limite Then
    destCella = "D" & contatoreSomma
    Application.Range(destCella).Value = ""
    somma = somma - valCellaVal
    contatoreSomma = contatoreSomma - 1
    End If
    Next

    contatoreSomma = contatoreSomma + 1
    MsgBox "Somma = " & somma
    MsgBox "Contatore = " & contatoreSomma

    differenza = limite - somma
    differenza = Round(differenza, 2)
    For contatore = 1 To 96
    idCella = "A" & contatore
    idCellaVal = Application.Range(idCella).Value
    pivot = 0
    For contatoreSelezionati = 1 To contatoreSomma - 1
    destCella = "D" & contatoreSelezionati
    idDestCella = Application.Range(destCella).Value
    If idDestCella = idCellaVal Then
    pivot = 1
    Exit For
    End If
    Next

    If pivot = 0 Then
    valCella = "B" & contatore
    valCellaVal = Application.Range(valCella).Value
    valCellaVal = Round(valCellaVal, 2)
    If valCellaVal >= differenza Then
    destCella = "D" & contatoreSomma
    partCella = "E" & contatoreSomma
    diffCella = "F" & contatoreSomma
    Application.Range(destCella).Value = idCellaVal
    Application.Range(partCella).Value = differenza
    Application.Range(diffCella).Value = valCellaVal - differenza
    Exit For
    End If
    End If
    Next
    End Sub

    ove nella colonna A occorre mettere gli identificativi dei valori da selezionare, e nella colonna B i valori veri e propri. Ognuno di voi potrà apportare i miglioramenti che preferisce... il primo da apportare è che ho "cablato" nel codice di considerare 96 valori, chiunque può inventarsi un ciclo Do...Loop che rilevi la prima cella vuota...
    Kisses,

    Nat

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.