Come fare semplici calcoli in VBA di Excel


-6

Ho un valore in qualsiasi cella che è maggiore di 60. Per il mio scopo, ho bisogno di sottrarre 60 da tali valori fino a quando il valore è inferiore a 60. Quindi, per esempio, dire che ho una cella contenente un valore di 1000. Il il valore che voglio usare sarebbe 40 perché 40 è il primo valore che è inferiore a 60 dopo aver ripetutamente sottratto 60.

Immagino una soluzione VBA che sottrarrebbe 60 volte e poi si fermerà e visualizzerà il valore finale, 40, poiché questo soddisfa la condizione.

L'intervallo di dati è ampio e i valori superiori a 60 possono verificarsi in qualsiasi punto dell'intervallo. Voglio che ciò avvenga automaticamente quando apro il foglio di calcolo in modo che tutte le formule che potrebbero riferirsi a valori superiori a 60 utilizzino i remainder.


1
1) Se trascini la formula, nessuna delle celle ma la prima farà riferimento al valore 1000; più dati devono essere inseriti o è necessario ancorare il riferimento con $ s. 2) Stai cercando di avere VBA per popolare l'intervallo con la formula invece di trascinarlo? Ci vorrà più tempo per scrivere il codice VBA piuttosto che trascinarlo manualmente. Anche su un ampio intervallo, questa formula non richiederà molto tempo per il calcolo e sarà la stessa in VBA. Stai cercando di popolare solo il risultato del calcolo? Puoi farlo trascinando un riferimento alla cella del risultato. Puoi chiarire cosa vuoi ottenere?
fixer1234

Ciao, grazie per la risposta Sì a) Voglio solo che il risultato del calcolo sia visualizzato in un foglio Excel in qualsiasi cella. b) vorrei che il calcolo fosse automatico quando apro la cartella di lavoro. In questo caso, ho un valore in qualsiasi cella in foglio Excel che è 1000 e come 1000 è maggiore di 60 ho bisogno di sottrarre 60 da 1000 fino a quando il valore è inferiore a 60. Durante l'utilizzo di una calcolatrice, il valore che voglio dopo la sottrazione è 40 perché 40 è il primo valore che è inferiore a 60. E inoltre voglio che il calcolo si fermi e mostri il valore finale 40, poiché questo soddisfa la condizione.
EXCEL LOVER

Risposte:


0

Non hai bisogno di VBA per fare ciò che vuoi. Si desidera sottrarre 60 ripetutamente fino a quando il resto è inferiore a 60. È possibile scrivere codice VBA per farlo, ma è possibile farlo in un'unica fase con una formula:

    =MOD(ED1,60)

Se dividi 1000 per 60, ottieni 16.666 ... Ciò significa che dovresti sottrarre 60 sedici volte per ottenere qualcosa di meno di 60. La funzione MOD produce il resto dopo la divisione (in questo caso, 40), che è equivalente a quelle sottrazioni.

Puoi usare questo in due modi. Uno è quello di incorporare questa espressione MOD (senza il segno di uguale) nelle formule al posto del semplice riferimento di cella alle celle di dati che può eccedere 60. Questo utilizzerà il valore tradotto.

Se si dispone di numerose formule che fanno riferimento a ciascuna cella e non si desidera avere il sovraccarico di tutto il ricalcolo ripetuto degli stessi valori, creare un set di valori tradotti - un intervallo di dati duplicato contenente la formula precedente. Ciò tradurrà i dati una volta e quindi tutte le tue formule potranno fare riferimento a questi numeri anziché ai dati grezzi. Se non si desidera che il sovraccarico di tali calcoli venga aggiornato, eseguire una copia incolla speciale | valori. È possibile incollare i risultati sui dati non elaborati e quindi eliminare i calcoli intermedi.


Ho fatto esattamente la stessa cosa, ma il valore risulta essere 2400 anziché 40. Esistono altre soluzioni alternative che utilizzano formule, vbas, plugin ecc. A parte da = IF (ED1 & gt; 60, ED1-60, ED1)? quale sarebbe utile nell'esecuzione di calcoli più grandi.
EXCEL LOVER

Il mio brutto, non abbastanza caffè. La funzione MOD produce da sola il resto effettivo, non è necessario il * 60 alla fine. Ho corretto la formula e la discussione. Non sono sicuro di aver capito il resto del tuo commento. Questa correzione fa ciò di cui hai bisogno o stai cercando qualcosa di diverso? (Non sei sicuro di cosa intendi con calcoli più grandi, MOD non risolve per sottrazioni successive, lo fa per divisione, quindi ritaglia l'intero numero, qualunque esso sia, e quindi converte il resto frazionario in un numero intero.)
fixer1234

Ciao, grazie mille per aver aperto gli occhi e avere un grande sorriso in faccia. Questo è esattamente quello che stavo cercando. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: !!!!!!!! :::::::::
EXCEL LOVER

0

Ho una grande notizia! Perché il valore in ED1 è una costante, la formula genererà sempre il valore:

960

Supponiamo che la lunga distanza sia A1: Z100

Ecco il VBA soluzione basata:

Private Sub Workbook_Open()
    Sheets("Sheet1").Range("A1:Z100").Value = 960
End Sub

Questa è una macro evento di una cartella di lavoro.

Poiché si tratta di codice della cartella di lavoro, è molto semplice da installare e utilizzare:

  1. fare clic con il pulsante destro del mouse sulla piccola icona di Excel a sinistra di File nella barra dei menu
  2. seleziona Visualizza codice: questo fa apparire una finestra VBE
  3. incollare il materiale e chiudere la finestra VBE

Se si salva la cartella di lavoro, la macro verrà salvata con essa. Se si utilizza una versione di Excel successiva al 2003, è necessario salvare il file come .xlsm piuttosto che .xlsx

Per rimuovere la macro:

  1. visualizzare le finestre VBE come sopra
  2. cancellare il codice
  3. chiudi la finestra VBE

Per saperne di più sulle macro in generale, vedere:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

e

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

Per ulteriori informazioni sulle macro degli eventi (codice della cartella di lavoro), vedere:

http://www.mvps.org/dmcritchie/excel/event.htm

Le macro devono essere abilitate affinché funzioni!


Ciao, grazie per la risposta, in realtà il valore iam cercando è 40 perché quando inizio a sottrarre 60 da 1000 fino a che il valore è inferiore a 60 è "40" e voglio anche che quel valore sia visualizzato in qualsiasi cella in foglio Excel dopo il calcolo è fatto.
EXCEL LOVER

@EXCELLOVER Quindi modificare il codice inviato per soddisfare le tue esigenze!
Gary's Student

Bene, lo studente di Gary che non sarà necessario ora. Grazie per il tuo impegno, lo apprezzo
EXCEL LOVER
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.