Minimo in Range Variabile
Hai un problema con Excel? 
Minimo in Range Variabile
di Baymai (utente non iscritto) data: 02/03/2016 07:04:46
Buongorno a tutti,
Sto cercando di creare un programmino VBA per far si che in base a due valori interi inseriti dall'utente in due distinte message box("Inizio", "Fine") riceva e utilizzi tali valori per discriminare un intervallo di righe(es.da 1 a 2) del mio foglio di calcola, passandola ad una function(che riporto sotto). Il problema nasce qua, in quanto all'interno della function desidererei restringere in maniera programmatica il range(per es. da col. A a col. C). Dentro tale intervallo infine, determinare riga per riga(Per quello ho ipotizzato di usare un ciclo for next) se il valore max-min dei valori riportati in tale riga supera il valore di "1". Se questo succede incrementa la variabile Ris di 1. Per rendere l'idea...Un utente inserisce Inizio=1 Fine=2 da msg.box...Il programma riceve, restringe il campo da colonna A a col. C, Ricava il val. massimo di riga 1(6), il minimo(4), esegue Max-Min(6-4=2)...Essendo maggiore di 1 non incrementa la variabile Ris e passa ad analizzare la riga successiva(riga 2).
Se qualche buon anima riuscisse ad aiutarmi gliene sarei infinitamente grato!!!!!!!! Sto uscendo pazzo...Grazie mille a tutti, e complimenti per il forum!!!! Utilissimo e ben organizzato!
A B C D E
1 4 5 6 7 4
2 2 2 3 4 2
3 7 8 9 6 5
Function v(ByVal Inizio As Integer, ByVal Fine As Integer) As Integer
Dim i As Integer
Dim Min As Double
Dim Max As Double
Dim Ris As Double
Dim Colonne As Integer
For i = Inizio To Fine Step 1
For Colonne = 2 To 5
Min = Workshitfunction.Min() 'Errore di debug
Max = Workshitfunction.Max() 'Errore di debug
if Max-Min>1 Then Ris = Ris+1
Next Colonne
Next i
|
di Marius44 data: 02/03/2016 09:37:22
Vado di fretta ma guarda che l'errore che ti dà (non entro nel merito del codice) è dovuto ad una errata scrittura.
Devi mettere
Worksheetfunction.
con le due e al posto della i
Ciao,
Mario
di alfrimpa data: 02/03/2016 10:22:10
scusate avevo scritto una cosa non corretta.
Alfredo
di Albatros54 data: 02/03/2016 11:57:38
Non è una funzione.
incolla il codice sotto in VBA in un modulo, metti i valori nel foglio1.
Forse fa quello che chiedi.
Sub MinthenMax()
Dim rngrows As Range
Dim myrow As Long
Dim mymin As Double
Dim mymax As Double
Dim Ris As Double
Dim LastColumn As Long
For myrow = 1 To Foglio1.UsedRange.Rows.Count
LastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
Set rngrows = Range(Cells(myrow, 1), Cells(myrow, LastColumn))
mymin = Application.WorksheetFunction.Min(rngrows)
mymax = Application.WorksheetFunction.Max(rngrows)
MsgBox "Valore Min riga " & myrow & " è: " & mymin
MsgBox "Valore max riga " & myrow & " è: " & mymax
If mymax - mymin < 1 Then Ris = Ris + 1
MsgBox "Differenza Maggiore di uno sono " & myrow & " è: " & Ris
Next myrow
End Sub
|
Vuoi Approfondire?