La macro allegata è quella fatta da Anthony, laddove ci sarebbero aggiunte da fare per questo foglio sui numeri determinati “Globali”.
- Codice: Seleziona tutto
'Questa macro di Anthony aggiorna gli storici nel foglio "Tab" (DETERMINATI) quando nella cella "D1" foglio At e con > di 0 in "J"
's'inserisce un numero che è sortito in Prima posizione su Bari.
Sub lpzz()
Dim VArr, I As Long, CPos As Long, TVal As Long, LB2 As Long, myMatch, MErr As String
Sheets("At").Select
CPos = Application.WorksheetFunction.CountIf(Range("J:J"), ">=0")
TVal = Range("D1")
If TVal <= 0 Or TVal > 90 Then Beep: Exit Sub 'Aggiunta - affinché D1 contenga qualcosa di valido
VArr = Range("C5").Resize(CPos, 8).Value
LB2 = LBound(VArr, 2)
With Sheets("Tab")
For I = LBound(VArr, 1) To UBound(VArr, 1)
If VArr(I, LB2 + 1) = TVal Then
myMatch = Application.Match(VArr(I, LB2), .Range("A1:A200"), 0)
If Not IsError(myMatch) Then
If VArr(I, LB2 + 4) > .Cells(myMatch, 2 + TVal).Value Then .Cells(myMatch, 2 + TVal).Value = VArr(I, LB2 + 4)
Else
MErr = MErr & "; " & VArr(I, LB2)
End If
End If
Next I
End With
If Len(MErr) > 0 Then
MsgBox ("Ci sono stati errori nell' identificazione di Ruo-Pos" & vbCrLf & Left(mess, 100))
End If
End Sub
In questa, inserivo all’occorrenza un solo numero da processare in “D1” ma, poiché ora il foglio At e Tab contengono nella loro totalità sia (storici che attuali) di tutte le posizioni e ruote, occorrerebbe processare le cinque caselle E1:I1 del foglio “At” tutte insieme, qualora vengono inseriti in ognuna d’esse dei numeri.
Il numero potrebbe anche essere solamente uno immesso naturalmente in una delle cinque celle. A questo proposito, però, la macro interviene esclusivamente per quei numeri colonna “D” che subiscono la condizione della colonna “J” che viene sempre impostata con >=0.
L’esempio riportato sotto vale per tutti:
Il primo numero che abbiamo in “D5” è il 68 quale fa riferimento a “C5” | “F5”.
Supponendo d’inserire questo numero in “F1” dovremmo aggiornare il Tab con il nuovo ritardo storico che esso ha acquisito nella colonna “G” Ritardi.
Lo troviamo 70 volte con medesima posizione nella colonna “F” ma con posizioni e ruote diverse (di partenza) colonna “C”.
Nel Tab, quindi, il primo 68 lo troviamo: anzitutto nella colonna “B” posizione 5 che in fondo al foglio e, nella colonna “A233” il corrispondente della ruota; in questo caso “CA 5”.
Colorato di giallo vi è lo storico che sarà sostituito con il nuovo del foglio At “G5” = 409.
Il secondo 68 di At “D7” con ruota e posizione in “C7” FI 2 lo troviamo nel Tab in “A207” con valore che sarà sostituito da 246 a 447 del foglio At “G7”.
Piuttosto lungo e difficile da spiegare ma penso anche da costruire.
https://dl.dropboxusercontent.com/u/182 ... ale%202.7z
Confido come sempre nella bravura di chi si cimenta con il VB.
Ciao