Secuencia o numerador único en vba?
Para Dante Amor
Respuesta de Dante Amor a la pregunta: Pregunta: Consolidar datos según el mes con vba?
Con respecto a esta respuesta ingeniero Dante Amor, me ha gustado mucho el código que le diste en esta respuesta y me he tomado mi tiempo para comprenderlo y buscar mas sobre el mismo sobre todo en el uso del objeto diccionario de vba, aunque no es mucho lo que se encuentra.
Me podrías ayudar con base en el mismo código a crear o a mantener la secuencia o numerador único de los ID con respecto al mes que corresponda, ya que al tomarlo tal cual me copia la secuencia última de la hoja 2 según la imagen de referencia de la misma pregunta.
Y como una imagen vale más que mil palabras
Su código
Sub ConsolidarPorMes() Dim a As Variant, b As Variant, c As Variant Dim dic1 As Object, dic2 As Variant Dim llave As String Dim i As Long, j As Long, k As Long ' a = Sheets("Hoja1").Range("A2", Sheets("Hoja1").Range("C" & Rows.Count).End(3)).Value b = Sheets("Hoja2").Range("A2", Sheets("Hoja2").Range("T" & Rows.Count).End(3)).Value ReDim c(1 To UBound(b, 1), 1 To UBound(b, 2)) Set dic1 = CreateObject("Scripting.Dictionary") Set dic2 = CreateObject("Scripting.Dictionary") ' For i = 1 To UBound(a, 1) dic1(a(i, 2)) = a(i, 1) & "|" & a(i, 3) Next ' For i = 1 To UBound(b, 1) llave = b(i, 2) & "|" & Month(b(i, 20)) If Not dic2.exists(llave) Then j = j + 1 dic2(llave) = j Else j = dic2(llave) End If For k = 1 To UBound(b, 2) Select Case k Case 1, 3 'SEC | NOMBRE If dic1.exists(b(i, 2)) Then c(j, 1) = Split(dic1(b(i, 2)), "|")(0) c(j, 3) = Split(dic1(b(i, 2)), "|")(1) Else c(j, k) = b(i, k) End If Case 2 'ID c(j, k) = b(i, k) Case 19 'OBS If b(i, k) <> "" Then c(j, k) = b(i, k) Case 20 'fecha 'Último día del mes c(j, k) = DateSerial(Year(b(i, 20)), Month(b(i, 20)) + 1, 1) - 1 Case Else 'VR c(j, k) = c(j, k) + b(i, k) End Select Next Next Sheets("Hoja3").Range("A2").Resize(dic2.Count, UBound(c, 2)).Value = c End Sub
Espero su valiosa ayuda, soy novato pero me encanta aprender y he visto sus respuestas y son muy comprensibles y útilies para casos de la vida real.