Moderatori: Anthony47, Flash30005
Sub OrarioAnti()
Application.ScreenUpdating = False
Application.Calculation = xlManual
UR = Worksheets("Foglio2").Range("B" & Rows.Count).End(xlUp).Row
Dim VettO(74) As Integer
VettO(1) = 32
VettO(2) = 15
VettO(3) = 19
VettO(4) = 4
VettO(5) = 21
VettO(6) = 2
VettO(7) = 25
VettO(8) = 17
VettO(9) = 34
VettO(10) = 6
VettO(11) = 27
VettO(12) = 13
VettO(13) = 36
VettO(14) = 11
VettO(15) = 30
VettO(16) = 8
VettO(17) = 23
VettO(18) = 10
VettO(19) = 5
VettO(20) = 24
VettO(21) = 16
VettO(22) = 33
VettO(23) = 1
VettO(24) = 20
VettO(25) = 14
VettO(26) = 31
VettO(27) = 9
VettO(28) = 22
VettO(29) = 18
VettO(30) = 29
VettO(31) = 7
VettO(32) = 28
VettO(33) = 12
VettO(34) = 35
VettO(35) = 3
VettO(36) = 26
VettO(37) = 0
For RR = 2 To UR - 1
Num1 = Worksheets("Foglio2").Range("B" & RR).Value
Num2 = Worksheets("Foglio2").Range("B" & RR + 1).Value
ORiE = ""
NI = -1
NF = -1
For VN = 1 To 37
If VettO(VN) = Num1 Then
If NI = -1 Then NI = VN
End If
If VettO(VN) = Num2 Then
If NF = -1 Then NF = VN
End If
Next VN
If NF - NI < 0 Then NF = 37 + Abs(NF)
esci:
ORiE = "ORARIO"
ValD = (NF - NI) + 1
If ValD = 1 Then
ORiE = "UGUALE"
Else
If NF - NI >= 19 Then
ValD = 38 + (NI - NF)
ORiE = "ANTIORARIO"
End If
End If
Worksheets("Foglio2").Range("D" & RR).Value = ValD
Worksheets("Foglio2").Range("F" & RR).Value = ORiE
Next RR
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
12 - 13 -....orario”
17 - 24 - la distanza doveva essere 15 ... antiorario ...
7 - 13 - ... antiorario ”
2 - 28 - la distanza doveva essere 11 ...antiorario ...
12
Flash30005 ha scritto:Ti avevo fatto delle domande ma credo che sia così
La macro in caso di uscita dello stesso numero fornisce 1 perché da tutti gli esempi fatti da te conteggi sempre
il numero di partenza12 - 13 -....orario”
17 - 24 - la distanza doveva essere 15 ... antiorario ...
7 - 13 - ... antiorario ”
2 - 28 - la distanza doveva essere 11 ...antiorario ...
12
Altrimenti non potresti ottenere i risultati da te citati
ciao
Flash30005 ha scritto:Ok per zero
ma tutti gli esempi riportati poi avranno un numero in meno
![]()
Fai sapere
Sub OrarioAnti()
Application.ScreenUpdating = False
Application.Calculation = xlManual
UR = Worksheets("Foglio2").Range("B" & Rows.Count).End(xlUp).Row
Dim VettO(74) As Integer
VettO(1) = 32
VettO(2) = 15
VettO(3) = 19
VettO(4) = 4
VettO(5) = 21
VettO(6) = 2
VettO(7) = 25
VettO(8) = 17
VettO(9) = 34
VettO(10) = 6
VettO(11) = 27
VettO(12) = 13
VettO(13) = 36
VettO(14) = 11
VettO(15) = 30
VettO(16) = 8
VettO(17) = 23
VettO(18) = 10
VettO(19) = 5
VettO(20) = 24
VettO(21) = 16
VettO(22) = 33
VettO(23) = 1
VettO(24) = 20
VettO(25) = 14
VettO(26) = 31
VettO(27) = 9
VettO(28) = 22
VettO(29) = 18
VettO(30) = 29
VettO(31) = 7
VettO(32) = 28
VettO(33) = 12
VettO(34) = 35
VettO(35) = 3
VettO(36) = 26
VettO(37) = 0
For RR = 2 To UR - 1
Num1 = Worksheets("Foglio2").Range("B" & RR).Value
Num2 = Worksheets("Foglio2").Range("B" & RR + 1).Value
ORiE = ""
NI = -1
NF = -1
For VN = 1 To 37
If VettO(VN) = Num1 Then
If NI = -1 Then NI = VN
End If
If VettO(VN) = Num2 Then
If NF = -1 Then NF = VN
End If
Next VN
If NF - NI < 0 Then NF = 37 + Abs(NF)
esci:
ORiE = "ORARIO"
ValD = (NF - NI)
If ValD = 0 Then
ORiE = "UGUALE"
Else
If NF - NI >= 19 Then
ValD = 37 + (NI - NF)
ORiE = "ANTIORARIO"
End If
End If
Worksheets("Foglio2").Range("D" & RR).Value = ValD
Worksheets("Foglio2").Range("F" & RR).Value = ORiE
Next RR
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Flash30005 ha scritto:Secondo me una volta filtrati i numeri devi copiare quelli visibili e incollarli in un altro foglio oppure nelle rughe non filtrate dello stesso foglio
e poi fai il prodotto selezionando i numeri incollati
altrimenti avrai il prodotto di tutti i numeri nascosti dal filtro
ciao
Flash30005 ha scritto:Mi devi spiegare perché per avere un filtro hai un codice di filtratura, giusto?
pertanto puoi applicare una formula che quando trova quel codice fa il prodotto del numero corrispondente
Oppure usi la tabella Pivot nella quale imposti il prodotto invece che somma
Ciao
P.s. si può fare anche con macro chiaramente, ma come sai occorrono più informazioni
=SUBTOTALE(6;C2:C40)
Sub myscost11()
Dim VettO As Variant
ColD = "D" '<<< Colonne in cui inserire distanza e Verso
ColV = "E" '<<<
'
UR = Worksheets("Foglio2").Range("B" & Rows.Count).End(xlUp).Row
'
VettO = Array(0, 32, 15, 19, 4, 21, 2, 25, 17, 34, 6, 27, 13, 36, 11, 30, 8, 23, 10, _
5, 24, 16, 33, 1, 20, 14, 31, 9, 22, 18, 29, 7, 28, 12, 35, 3, 26)
For I = 2 To UR - 1
wDist = Abs(Application.Match(Cells(I, 2).Value, VettO, 0) - _
Application.Match(Cells(I + 1, 2).Value, VettO, 0))
Verso = Application.Match(Cells(I, 2).Value, VettO, 0) > Application.Match(Cells(I + 1, 2).Value, VettO, 0)
Select Case wDist
Case 19 To 40
Cells(I, ColD) = 37 - wDist: If Verso = True Then Cells(I, ColV) = "ORAR" _
Else Cells(I, ColV) = "AntiORAR"
Case 1 To 18
Cells(I, ColD) = wDist: If Verso = True Then Cells(I, ColV) = "AntiORAR" _
Else Cells(I, ColV) = "ORAR"
Case 0
Cells(I, ColD) = 0: Cells(I, ColV) = ""
End Select
Next I
End Sub
Torna a Applicazioni Office Windows
Inserimento parziale valore cella in MessageBox Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 6 |
Inserire dati filtrati da 2 file ad un terzo file Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 14 |
Perchè l'importazione dati con Selenium non fuziona? Autore: aggittoriu |
Forum: Applicazioni Office Windows Risposte: 7 |
Visitano il forum: Marius44 e 12 ospiti