aikon36482
00giovedì 26 gennaio 2017 09:35
Buongiorno,
impostati i dati come nel file Esempio, ho fatto una macro che conti per ogni città il numero di occorrenze del mese.
Questa macro non funziona, perchè secondo voi?
Nella colonna C del file c'è il risultato atteso, mentre nella colonna D c'è il risultato della macro:
Sub prova()
ur = Worksheets("Foglio1").Cells(Rows.Count, 1).End(xlUp).Row
j = 2
For i = 2 To ur
Worksheets("Foglio1").Select
Set rangecitta = Worksheets("Foglio1").Range("A:A")
Set rangedata = Worksheets("Foglio1").Range("B:B")
citta = Worksheets("Foglio1").Range("A" & i)
data = Worksheets("Foglio1").Range("A" & i)
conta = Application.CountIfs(rangecitta, citta, rangedata, Month(data))
Range("D" & i).Value = conta
Next i
End Sub
alfrimpa
00giovedì 26 gennaio 2017 14:41
Scusa aikon in colonna D non c'è nulla.
Puoi ripostare il file con il risultato corretto inserito a mano?
Io ho provato la macro ma mi va in errore.
aikon36482
00giovedì 26 gennaio 2017 14:48
Ho rimesso l'allegato con la colonna D
alfrimpa
00giovedì 26 gennaio 2017 16:04
Ciao aikon
ma perché vuoi ricorrere al VBA quando puoi fare tutto con le formule?
In colonna E2 metti questa formula
e trascini in basso.
In F2 metti questa
=CONTA.PIÙ.SE($A$2:$A$11;A2;$E$2:$E$11;E2)
e trascini in basso.
aikon36482
00giovedì 26 gennaio 2017 17:21
Mi serve il codice vba perchè questa procedura è all'interno di un processo un po' più ampio.
La procedura da te suggerita è possibile implementarla in vba?
Grazie.
alfrimpa
00venerdì 27 gennaio 2017 09:57
Ciao Aikon
Mi riesce difficile capire perché, anche in presenza di un progetto VBA, non possa usare le formule
comunque in colonna D da D2 in poi inserisci la formula (eventualmente nascondi la colonna D)
ed esegui questa macro
vb
Sub ContaPiu()
Dim i As Long
Dim mese As Integer
Dim urCitta As Long
Dim urMeseData As Long
Dim conta As Long
Dim rngCitta As Range
Dim rngMeseData As Range
urCitta = Cells(Rows.Count, 1).End(xlUp).Row
urMeseData = Cells(Rows.Count, 4).End(xlUp).Row
Set rngCitta = Range("A2:A" & urCitta)
Set rngMeseData = Range("d2:d" & urMeseData)
For i = 2 To urMeseData
conta = Cells(Rows.Count, 3).End(xlUp).Row
mese = Month(Range("c" & i).Offset(0, -1).Value)
Cells(conta + 1, 3).Value = Application.WorksheetFunction.CountIfs(rngCitta, Range("c" & i).Offset(0, -2).Value, rngMeseData, mese)
Next i
End Sub