Sub elabora()
Dim Ur, X, Y, Tot, Rg As Object 'Dichiarazione delle variabili come oggetti.
Ur = Range("A" & Rows.Count).End(xlUp).Row 'UR immagino stia per ultimariga
'letteralmente il codice esegue questa azione, prende in considerazione un range in questo caso A ed il numero di righe del foglio (rows.count) quindi va alla cella A65536 e proprio come se schiacciassi CTRL + freccia su indicata dal codice (Xlup) torna fino alla prima cella non vuola e con la proprietà .row la variabile UR prende proprio il valore di riga della prima cella non vuota partendo dal basso, nel tuo caso la riga 49.
For X = 4 To Ur 'usiamo la variabile X che dovrà avere valore diversi per poter effettuare le verifiche o 'operazione su più celle quindi la X ha come valore di partenza il 4 e cambiera valore di 1 unità fino ad 'arrivare (to UR) a 49
Range(Cells(3, 4), Cells(3, 11)).Copy 'vengono copiate le celle delle PLANTS nel rigo di partenza
'Range indica uno spazio, un intervallo, come su excel devi indicare 2 celle, in questo caso cells(3,4) ovvero la cella che corrisponde alla riga 3 e alla colonna 4 (D3) fino alla cella K3.
Cells(X, 4).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'Questo comando equivale, dopo aver copiato un range, a cliccare con il tasto destro del mouse e cliccare su
'incolla speciale. In incolla speciale ci sono diversi opzioni come ad esempio cosa incollare, valori, formati etc in questo caso abbiamo dato l' informazione "incolla valori" xlpastevalues. Le altre opzioni non sto a spiegarle le puoi immaginare eseguendo l' operazione con il mouse.
Tot = Application.WorksheetFunction.CountIf(Range("A:A"), Cells(X, 1).Value) - 1
'viene data alla variabile tot un valore utilizzando una formula già esistente in excel richiamandola tramite
applicaiton.(l'application è excel).worksheetfunction(funzioni del foglio di lavoro).countif(conta.se)
'Cosa conta ? Nel range"A:A" c'è il valore in cella con riga 4 e colonna 1 quindi cella a4 ? Si Quante volte ? 9 ok ma togli 1 quindi TOT al primo giro diventa 8.
For Y = 1 To Tot 'Già spiegato
Set Rg = Range("C3:K3").Find(Cells(X + Y, 2), LookIn:=xlValues, LookAt:=xlWhole)
'Il comando qui sopra assegna alla variabile RG un cella, ma quale ?
'Prima gli diamo un range("c3:k3") in cui chiediamo di cercare (metodo .find) il contenuto della cella di riga
' 4+1 e colonna 2 ovvero B5 ovvero "CH20".
If Not Rg Is Nothing Then
'Se Non RG è NIENTE o meglio in italiano, vista la doppia negazione, SE RG esiste quindi se è stato trovato il 'valore nell' intervallo e si è potuto assegnare quello spazio RG
r = Rg.Column 'la variabile R prende il numero di colonna di RG(CH20 è presente nella colonna E
'ovvero la colonna 5
Cells(X, r) = "OK" 'La cella di riga 4 colonna 5 diventa = "OK" se il plant non fosse stato trovato
'sarebbe rimasto visibile al posto di diventare OK così che sapevi quale plant era mancante.
End If
Next Y 'ricomincia il ciclo per tutte le y (ricorda che Y parta da 1 fino a quante volte è presente il P/N 'quindi cercherà ancora 7 volte)
X = X + Tot'infine viene assegnato alla variabile X il valore che si ottiene aggiungendo al primo rigo il totale dei P/N trovati così da 'passare al successivo P/N (X valeva 4, TOT è 8 quindi 4+8=12)
Next X 'ricomincia il ciclo delle X ma non passa da 4 a 5 bensi da 4 a 13 perchè abbiamo dato ad x un nuovo 'valore ovvero 12 e al ricominciare del ciclo viene aggiunga 1 unita.
End Sub |