Aggiungi solo distinti valori positivi con VBA

Sommario

Nel caso ti stia chiedendo come aggiungere solo valori positivi e univoci, questo articolo fa per te.

In questo articolo imparerai come aggiungere solo valori positivi distinti in Excel usando il codice VBA.

Domanda): Voglio una macro per sommare tutti i numeri positivi distinti in un intervallo specificato che include numeri negativi e positivi.

Di seguito è riportato lo snapshot dei dati in nostro possesso:

Dobbiamo seguire i passaggi seguenti:

  • Fare clic sulla scheda Sviluppatore
  • Dal gruppo Codice seleziona Visual Basic

Inserisci il seguente codice nel modulo standard:-

Funzione AddUnique(ByRef inputrange As Range, _

Facoltativo IgnoreText As Boolean = True, _

Facoltativo IgnoreError As Boolean = True, _

Facoltativo IgnoreNegativenumbers As Boolean = True)

Dim distinti numeri come doppi

Cella debole come intervallo

Dim dict come oggetto

Imposta dict = CreateObject ("Scripting.dictionary")

numeri distinti = 0

Per ogni cella in inputrange.Resize(inputrange.Rows.Count, 1)

cval = cella.Valore

Se IgnoraTesto Allora

If Not (VBA.IsNumeric(cval)) Allora cval = 0

Altro

AggiungiUnique = CVErr(0)

Esci dalla funzione

Finisci se

Se IgnoraErrore Allora

Se IsError(cval) Allora cval = 0

Altro

AggiungiUnique = CVErr(1)

Esci dalla funzione

Finisci se

Se Ignora i numeri negativi allora

Se cval < 0 Allora cval = 0

Altro

AggiungiUnique = CVErr(2)

Esci dalla funzione

Finisci se

If Not dict.Exists(cval) Then

dict.Aggiungi cval, cval

numeri distinti = numeri distinti + cval

Finisci se

Prossimo

AddUnique = numeri distinti

Fine funzione

  • Nella cella C2 la formula sarebbe
  • =AggiungiUnico(A2:A6)

  • Per verificare se il codice ignora o meno il valore ripetuto; cambiamo il valore nella cella A1 in 50 e vediamo il risultato.

In questo modo possiamo aggiungere valori positivi distinti tramite il codice macro.

Scarica file di esempio-xlsm

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave