Llevo la macro a mi hoja de trabajo y no funciona
Hola Valero
Hace unos días me enviaste esta macro respondiendo a mi pregunta del día 27 de Septiembre:
Private Sub Worksheet_Change(ByVal Target As Range)
'ValeroASM y DAM
Dim i, j, FilaFinal, repes As Integer
Dim UltChar, celda As String
Dim Datos() As Variant
If Not Intersect(Target, Range("A:C")) Is Nothing Then
Columns("D:F").ClearContents
Datos = Array("H", "Z", "X", "M", "Y", "P")
For j = 1 To 3
UltChar = UCase(Cells(1, j))
repes = 1
FilaFinal = Cells(Rows.Count, j).End(xlUp).Row
For i = 2 To FilaFinal
celda = UCase(Cells(i, j))
If celda <> UltChar Or (celda <> Datos(j - 1) And celda <> Datos(j + 2)) Then
UltChar = celda
repes = 1
Else
repes = repes + 1
If repes >= 3 Then
Cells(i + 1, j + 3) = 2 ^ (repes - 3) & IIf(UltChar = Datos(j - 1), Datos(j + 2), Datos(j - 1))
End If
End If
Next
Next
End If
End Sub
Funciona perfectamente cuando la pruebo en una hoja de Excel nueva. Hace exactamente lo que yo necesito.
El problema me surge cuando la pongo en el libro de Excel donde tengo los datos. Allí no hace nada.
Pensé que trasladando solo los contenidos de las celdas a otras en las cuales aplicar tu macro funcionaria y por eso te repregunté y luego realice la pregunta del dia 2, pero tampoco funciona.
He llegado a la conclusión de que debe ser porque las celdas de mi hoja de trabajo tienen una formula por la que llego a esa letra, concretamente son las siguientes:
COLUMNA A
=SI(I5="";"";SI(RESTO(I5;2)=0;"H";"M"))
COLUMNA B
=SI(I5="";"";SI(I5>50;"Y";SI(I5<50;"Z")))
COLUMNA C
=SI(I5="";"";SI(I5=0;"CERO";SI(I5=1;"X";SI(A5=2;"P";))))
El caso es que estoy atascado. Tengo la solución perfecta a lo que necesito pero no se hacerle funcionar.
Si pudieras ayudarme a resolverlo te estaría enormemente agradecido.
Un cordial saludo.
(PD) Si necesitas un ejemplo gráfico de la cuestión puedo enviártelo a donde me digas)