Moderatori: Anthony47, Flash30005
1) Partire dalla prima colonna e leggere l'inestazione di appartenenza della colonna
in questo caso Bari e controllare nelle celle se ci sono almeno due o più istanze
altrimenti lascia la colonna intatta e passa alla prossima colonna
2) trovate due o più celle con la stessa ruota deve controllare che le istanze abbiano la stessa
indicazione sul codice e sulla ruota se sono omogenei si passa al punto tre
altrimenti lascia la colonna intatta e va alla alla prossima colonna
3) nel caso in cui sia il codice che la ruota siano uguali la macro esegue le seguenti fasi:
a) copiare la prima istanza in fondo alla lista della colonna lasciando una cella vuota
b) fare i calcoli come è riportato negli esempi e scrivere in celle separate i numeri
1) Partire dalla prima colonna e leggere l'inestazione di appartenenza della colonna
in questo caso Bari e controllare nelle celle se ci sono almeno due o più istanze
altrimenti lascia la colonna intatta e passa alla prossima colonna
Immagino che significhi "controllare che dopo riga 1 ci siano almeno altre 2 righe in quella colonna con la stessa ruota presente in riga 1"
2) trovate due o più celle con la stessa ruota deve controllare che le istanze abbiano la stessa
indicazione sul codice e sulla ruota se sono omogenei si passa al punto tre
altrimenti lascia la colonna intatta e va alla alla prossima colonna
Qui per me e' un po' piu' difficile... Che significa "avere la stessa indicazione sul codice"?
Insomma fatti sentire col chiarimento chiesto al "punto 2)" e vedremo che fare.
Capisco anche, come scrivi in B24, "Concorso 144 al concorso 153= 9"
Nel "NB" e' anche descritto come contare affinche' torni il concetto che "Concorso 142 al concorso 002= 17"
Nel frattempo ti do' alcuni numeri buoni: 1-2-3-4-5 da giocare su tutte le ruote di Biella e provincia![]()
![]()
Sub GodSaveIkWae()
Dim I As Long, mySplitA, mySplitB, cRt As String, ctA As Long, ctB As Long, Delta As Long
Dim FixB As Long, Flagg As Boolean, J As Long
'
FixB = 157
'
For I = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
cRt = Trim(Mid(Cells(1, I), InStrRev(Cells(1, I).Value, " ", , vbTextCompare)))
For J = 2 To Cells(Rows.Count, I).End(xlUp).Row - 1
mySplitA = Split(Cells(J, I).Value & " - ", " - ", , vbTextCompare)
mySplitB = Split(Cells(J + 1, I).Value & " - ", " - ", , vbTextCompare)
If mySplitA(0) = mySplitB(0) And _
InStr(1, Cells(J, I), cRt, vbTextCompare) > 0 And InStr(1, Cells(J + 1, I), cRt, vbTextCompare) > 0 Then
If Not Flagg Then Cells(Rows.Count, I).End(xlUp).Offset(2, 0) = Cells(J, I)
'Calcolo Delta
ctA = CLng(Left(mySplitA(1), 3))
ctB = CLng(Left(mySplitB(1), 3))
If ctB > ctA Then
Delta = ctB - ctA
Else
Delta = ctB - ctA + FixB
End If
Cells(Rows.Count, I).End(xlUp).Offset(1, 0) = Delta
Flagg = True
End If
Next J
Flagg = False
Next I
MsgBox ("Completato...")
End Sub
Se non fornisce i dati richiesti allora spiega con un paio di esempi che cosa ti è stato restituito, che cosa volevi invece vedere e perché'
If mySplitA(0) = mySplitB(0) And _
InStr(1, mySplitA(1), cRt, vbTextCompare) > 0 And InStr(1, mySplitB(1), cRt, vbTextCompare) > 0 Then '<<VEDI MODIFICHE
Sub GSIkWae()
Dim I As Long, mySplitA, mySplitB, cRt As String, ctA As Long, ctB As Long, Delta As Long
Dim FixB As Long, Flagg As Boolean, J As Long, FTim As Boolean
'
FixB = 157
'
For I = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
FTim = False
cRt = Trim(Mid(Cells(1, I), InStrRev(Cells(1, I).Value, " ", , vbTextCompare)))
For J = 2 To Cells(Rows.Count, I).End(xlUp).Row - 1
mySplitA = Split(Cells(J, I).Value & " - ", " - ", , vbTextCompare)
mySplitB = Split(Cells(J + 1, I).Value & " - ", " - ", , vbTextCompare)
'correzione per Rn
If mySplitA(0) = mySplitB(0) And _
Trim(Mid(Cells(J, I), InStrRev(Cells(J, I).Value, " ", , vbTextCompare))) = Trim(Mid(Cells(J + 1, I), InStrRev(Cells(J + 1, I).Value, " ", , vbTextCompare))) Then '<<VEDI MODIFICHE
If Not Flagg Then Cells(Rows.Count, I).End(xlUp).Offset(2 + FTim, 0) = Cells(J, I): FTim = True
'Calcolo Delta
ctA = CLng(Left(mySplitA(1), 3))
ctB = CLng(Left(mySplitB(1), 3))
If ctB > ctA Then
Delta = ctB - ctA
Else
Delta = ctB - ctA + FixB
End If
Cells(Rows.Count, I).End(xlUp).Offset(1, 0) = Delta
Flagg = True
Else
If Trim(Mid(Cells(J, I), InStrRev(Cells(J, I).Value, " ", , vbTextCompare))) = Trim(Mid(Cells(J - 1, I), InStrRev(Cells(J - 1, I).Value, " ", , vbTextCompare))) Then
Flagg = False
End If
End If
Next J
Flagg = False
Next I
MsgBox ("Completato...")
End Sub
Torna a Applicazioni Office Windows
Inserire dati filtrati da 2 file ad un terzo file Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 14 |
Aggiornare cella con somma quando aggiungo nuova colonna Autore: marcopont |
Forum: Applicazioni Office Windows Risposte: 1 |
Perchè l'importazione dati con Selenium non fuziona? Autore: aggittoriu |
Forum: Applicazioni Office Windows Risposte: 7 |
copia di dati da un file chiuso e elaborazione Autore: luca62 |
Forum: Applicazioni Office Windows Risposte: 2 |
Visitano il forum: Nessuno e 38 ospiti